summaryrefslogtreecommitdiff
path: root/src/core
diff options
context:
space:
mode:
authorMichael Drake <tlsa@netsurf-browser.org>2012-03-24 15:25:46 +0000
committerMichael Drake <tlsa@netsurf-browser.org>2012-03-24 15:25:46 +0000
commitc9b35216c9cb5f21905f11b890c32f4be7fec10d (patch)
treeea68649a29ca8b1002fee58dc119c303330c8d82 /src/core
parent79e4b4870b4cfa717ec88468ae5836cb92497201 (diff)
downloadlibdom-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.c29
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);