diff options
author | Michael Drake <tlsa@netsurf-browser.org> | 2012-03-24 15:25:46 +0000 |
---|---|---|
committer | Michael Drake <tlsa@netsurf-browser.org> | 2012-03-24 15:25:46 +0000 |
commit | c9b35216c9cb5f21905f11b890c32f4be7fec10d (patch) | |
tree | ea68649a29ca8b1002fee58dc119c303330c8d82 /src/core | |
parent | 79e4b4870b4cfa717ec88468ae5836cb92497201 (diff) | |
download | libdom-c9b35216c9cb5f21905f11b890c32f4be7fec10d.tar.gz libdom-c9b35216c9cb5f21905f11b890c32f4be7fec10d.tar.bz2 |
Split out destruction of element class cache.
svn path=/trunk/libdom/; revision=13597
Diffstat (limited to 'src/core')
-rw-r--r-- | src/core/element.c | 29 |
1 files changed, 22 insertions, 7 deletions
diff --git a/src/core/element.c b/src/core/element.c index 5f30cab..53f7ca5 100644 --- a/src/core/element.c +++ b/src/core/element.c @@ -333,6 +333,27 @@ static dom_attr_list * _dom_element_attr_list_clone(dom_attr_list *list) return new_list; } + +/** + * Destroy element's class cache + * + * \param ele The element + */ +static void _dom_element_destroy_classes(struct dom_element *ele) +{ + /* Destroy the pre-separated class names */ + if (ele->classes != NULL) { + unsigned int class; + for (class = 0; class < ele->n_classes; class++) { + lwc_string_unref(ele->classes[class]); + } + free(ele->classes); + } + + ele->n_classes = 0; + ele->classes = NULL; +} + static dom_exception _dom_element_get_attr(struct dom_element *element, dom_string *namespace, dom_string *name, dom_string **value); static dom_exception _dom_element_set_attr(struct dom_element *element, @@ -495,13 +516,7 @@ void _dom_element_finalise(struct dom_element *ele) } /* Destroy the pre-separated class names */ - if (ele->classes != NULL) { - unsigned int class; - for (class = 0; class < ele->n_classes; class++) { - lwc_string_unref(ele->classes[class]); - } - free(ele->classes); - } + _dom_element_destroy_classes(ele); /* Finalise base class */ _dom_node_finalise(&ele->base); |