summaryrefslogtreecommitdiff
path: root/src/core/element.c
diff options
context:
space:
mode:
authorJohn Mark Bell <jmb@netsurf-browser.org>2012-03-25 11:04:25 +0000
committerJohn Mark Bell <jmb@netsurf-browser.org>2012-03-25 11:04:25 +0000
commitcbafffdb2acd0d10be2cf62422c387390284fa52 (patch)
treeb395d770ebf29ec512222f7eae1dfbc5c893087d /src/core/element.c
parent1340f720113410d31bf35b606055a8975ac81e44 (diff)
downloadlibdom-cbafffdb2acd0d10be2cf62422c387390284fa52.tar.gz
libdom-cbafffdb2acd0d10be2cf62422c387390284fa52.tar.bz2
Make _dom_element_get_classes cope with copying multiple class values
svn path=/trunk/libdom/; revision=13676
Diffstat (limited to 'src/core/element.c')
-rw-r--r--src/core/element.c16
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;