summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Mark Bell <jmb@netsurf-browser.org>2009-01-25 22:07:01 +0000
committerJohn Mark Bell <jmb@netsurf-browser.org>2009-01-25 22:07:01 +0000
commitc16e3fe11247f531b31b05482734acc516e96ce4 (patch)
treeff59c9c66528d7a1e552f845c968292fa0f7e039
parentad49ce1d374ae0f4c3aa047bdec15ce92f698ce7 (diff)
downloadlibcss-c16e3fe11247f531b31b05482734acc516e96ce4.tar.gz
libcss-c16e3fe11247f531b31b05482734acc516e96ce4.tar.bz2
Clean up rules when destroying sheet
svn path=/trunk/libcss/; revision=6271
-rw-r--r--src/stylesheet.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/stylesheet.c b/src/stylesheet.c
index 56556e8..78f51a8 100644
--- a/src/stylesheet.c
+++ b/src/stylesheet.c
@@ -135,6 +135,8 @@ css_error css_stylesheet_create(css_language_level level,
*/
css_error css_stylesheet_destroy(css_stylesheet *sheet)
{
+ css_rule *r, *s;
+
if (sheet == NULL)
return CSS_BADPARM;
@@ -143,7 +145,16 @@ css_error css_stylesheet_destroy(css_stylesheet *sheet)
sheet->alloc(sheet->url, 0, sheet->pw);
- /** \todo destroy other data */
+ for (r = sheet->rule_list; r != NULL; r = s) {
+ s = r->next;
+
+ /* Detach from list */
+ r->parent = NULL;
+ r->prev = NULL;
+ r->next = NULL;
+
+ css_stylesheet_rule_destroy(sheet, r);
+ }
css_selector_hash_destroy(sheet->selectors);