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 | ab9ee0ab630dcab85b5fd8d5a2a00ccb5dce2473 (patch) | |
tree | e0423684c6729cfa787e090216f424fd71a7a4b8 /src/core/element.c | |
parent | 1c4c105e364d5817aa5659c708d69750a2c042c9 (diff) | |
download | libdom-ab9ee0ab630dcab85b5fd8d5a2a00ccb5dce2473.tar.gz libdom-ab9ee0ab630dcab85b5fd8d5a2a00ccb5dce2473.tar.bz2 |
Take copy of classes array, for client to free.
svn path=/trunk/libdom/; revision=13663
Diffstat (limited to 'src/core/element.c')
-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; } |