From e27244ca65a05375eec18e686c576a8febdf587e Mon Sep 17 00:00:00 2001 From: Michael Drake Date: Sat, 24 Mar 2012 15:25:46 +0000 Subject: Split out destruction of element class cache. svn path=/trunk/libdom/; revision=13597 --- src/core/element.c | 29 ++++++++++++++++++++++------- 1 file changed, 22 insertions(+), 7 deletions(-) (limited to 'src/core/element.c') 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); -- cgit v1.2.3