summaryrefslogtreecommitdiff
path: root/src/core
diff options
context:
space:
mode:
authorMichael Drake <tlsa@netsurf-browser.org>2012-03-25 10:13:44 +0000
committerMichael Drake <tlsa@netsurf-browser.org>2012-03-25 10:13:44 +0000
commitab9ee0ab630dcab85b5fd8d5a2a00ccb5dce2473 (patch)
treee0423684c6729cfa787e090216f424fd71a7a4b8 /src/core
parent1c4c105e364d5817aa5659c708d69750a2c042c9 (diff)
downloadlibdom-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')
-rw-r--r--src/core/element.c13
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;
}