diff options
author | John Mark Bell <jmb@netsurf-browser.org> | 2009-01-25 22:07:01 +0000 |
---|---|---|
committer | John Mark Bell <jmb@netsurf-browser.org> | 2009-01-25 22:07:01 +0000 |
commit | c16e3fe11247f531b31b05482734acc516e96ce4 (patch) | |
tree | ff59c9c66528d7a1e552f845c968292fa0f7e039 /src | |
parent | ad49ce1d374ae0f4c3aa047bdec15ce92f698ce7 (diff) | |
download | libcss-c16e3fe11247f531b31b05482734acc516e96ce4.tar.gz libcss-c16e3fe11247f531b31b05482734acc516e96ce4.tar.bz2 |
Clean up rules when destroying sheet
svn path=/trunk/libcss/; revision=6271
Diffstat (limited to 'src')
-rw-r--r-- | src/stylesheet.c | 13 |
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); |