summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDaniel Silverstone <dsilvers@netsurf-browser.org>2012-03-24 21:36:55 +0000
committerDaniel Silverstone <dsilvers@netsurf-browser.org>2012-03-24 21:36:55 +0000
commitfba4a540d3162c139a1d189283987fd7f1f2e19e (patch)
treefafa12ce3af382bcc3b17f9e518ec2fc9829731c /src
parent3a6f457783f23a96783d17dd0e427c7e4e5cb6da (diff)
downloadlibdom-fba4a540d3162c139a1d189283987fd7f1f2e19e.tar.gz
libdom-fba4a540d3162c139a1d189283987fd7f1f2e19e.tar.bz2
When copying elements, correctly copy the cached class list
svn path=/trunk/libdom/; revision=13630
Diffstat (limited to 'src')
-rw-r--r--src/core/element.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/core/element.c b/src/core/element.c
index 1c76db3..3400192 100644
--- a/src/core/element.c
+++ b/src/core/element.c
@@ -1404,6 +1404,7 @@ dom_exception _dom_element_copy(dom_node_internal *old,
dom_element *olde = (dom_element *) old;
dom_element *e;
dom_exception err;
+ uint32_t classnr;
e = malloc(sizeof(dom_element));
if (e == NULL)
@@ -1421,7 +1422,18 @@ dom_exception _dom_element_copy(dom_node_internal *old,
} else {
e->attributes = NULL;
}
-
+
+ if (olde->n_classes > 0) {
+ e->n_classes = olde->n_classes;
+ e->classes = malloc(sizeof(lwc_string *) * e->n_classes);
+ for (classnr = 0; classnr < e->n_classes; ++classnr)
+ e->classes[classnr] =
+ lwc_string_ref(olde->classes[classnr]);
+ } else {
+ e->n_classes = 0;
+ e->classes = NULL;
+ }
+
e->id_ns = NULL;
e->id_name = NULL;