diff options
author | John Mark Bell <jmb@netsurf-browser.org> | 2012-03-25 11:04:25 +0000 |
---|---|---|
committer | John Mark Bell <jmb@netsurf-browser.org> | 2012-03-25 11:04:25 +0000 |
commit | cbafffdb2acd0d10be2cf62422c387390284fa52 (patch) | |
tree | b395d770ebf29ec512222f7eae1dfbc5c893087d | |
parent | 1340f720113410d31bf35b606055a8975ac81e44 (diff) | |
download | libdom-cbafffdb2acd0d10be2cf62422c387390284fa52.tar.gz libdom-cbafffdb2acd0d10be2cf62422c387390284fa52.tar.bz2 |
Make _dom_element_get_classes cope with copying multiple class values
svn path=/trunk/libdom/; revision=13676
-rw-r--r-- | src/core/element.c | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/src/core/element.c b/src/core/element.c index 156fb47..0161728 100644 --- a/src/core/element.c +++ b/src/core/element.c @@ -1154,14 +1154,22 @@ 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) -{ +{ if (element->n_classes > 0) { + lwc_string **classes_copy = NULL; uint32_t classnr; - *n_classes = element->n_classes; - *classes = malloc(sizeof(lwc_string *) * element->n_classes); + + classes_copy = malloc(sizeof(lwc_string *) * + element->n_classes); + if (classes_copy == NULL) + return DOM_NO_MEM_ERR; + for (classnr = 0; classnr < element->n_classes; ++classnr) - *classes[classnr] = lwc_string_ref( + classes_copy[classnr] = lwc_string_ref( element->classes[classnr]); + + *classes = classes_copy; + *n_classes = element->n_classes; } else { *n_classes = 0; *classes = NULL; |