diff options
author | Daniel Silverstone <dsilvers@netsurf-browser.org> | 2012-03-24 21:36:55 +0000 |
---|---|---|
committer | Daniel Silverstone <dsilvers@netsurf-browser.org> | 2012-03-24 21:36:55 +0000 |
commit | fba4a540d3162c139a1d189283987fd7f1f2e19e (patch) | |
tree | fafa12ce3af382bcc3b17f9e518ec2fc9829731c | |
parent | 3a6f457783f23a96783d17dd0e427c7e4e5cb6da (diff) | |
download | libdom-fba4a540d3162c139a1d189283987fd7f1f2e19e.tar.gz libdom-fba4a540d3162c139a1d189283987fd7f1f2e19e.tar.bz2 |
When copying elements, correctly copy the cached class list
svn path=/trunk/libdom/; revision=13630
-rw-r--r-- | src/core/element.c | 14 |
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; |