diff options
author | Michael Drake <tlsa@netsurf-browser.org> | 2012-03-25 10:13:44 +0000 |
---|---|---|
committer | Michael Drake <tlsa@netsurf-browser.org> | 2012-03-25 10:13:44 +0000 |
commit | 56a7e29338fb8045252bf301d1debff50cf94145 (patch) | |
tree | e0423684c6729cfa787e090216f424fd71a7a4b8 /src/core | |
parent | 50b11fa97bb7c7d2e1c4c8fe6e692c90113ec08c (diff) | |
download | libdom-56a7e29338fb8045252bf301d1debff50cf94145.tar.gz libdom-56a7e29338fb8045252bf301d1debff50cf94145.tar.bz2 |
Take copy of classes array, for client to free.
svn path=/trunk/libdom/; revision=13663
Diffstat (limited to 'src/core')
-rw-r--r-- | src/core/element.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/src/core/element.c b/src/core/element.c index 7611e8f..df1654b 100644 --- a/src/core/element.c +++ b/src/core/element.c @@ -1155,8 +1155,17 @@ dom_exception _dom_element_set_id_attribute_node(struct dom_element *element, dom_exception _dom_element_get_classes(struct dom_element *element, lwc_string ***classes, uint32_t *n_classes) { - *classes = element->classes; - *n_classes = element->n_classes; + if (element->n_classes > 0) { + uint32_t classnr; + *n_classes = element->n_classes; + *classes = malloc(sizeof(lwc_string *) * element->n_classes); + for (classnr = 0; classnr < element->n_classes; ++classnr) + *classes[classnr] = lwc_string_ref( + element->classes[classnr]); + } else { + *n_classes = 0; + *classes = NULL; + } return DOM_NO_ERR; } |