diff options
author | John Mark Bell <jmb@netsurf-browser.org> | 2007-03-18 20:19:13 +0000 |
---|---|---|
committer | John Mark Bell <jmb@netsurf-browser.org> | 2007-03-18 20:19:13 +0000 |
commit | 947ab0dcd2bc3840da5db789862a75510c48106f (patch) | |
tree | 7ed16ddb91f3a6d7b70401648732306fdad99b13 /css/css.c | |
parent | 703b5fea73f9bbdb4f41aebcd75f71d32d340a2d (diff) | |
download | netsurf-947ab0dcd2bc3840da5db789862a75510c48106f.tar.gz netsurf-947ab0dcd2bc3840da5db789862a75510c48106f.tar.bz2 |
Ensure content structures are zero initialised.
Make css_destroy check that the stylesheet pointer exists (content
destructors may be called whilst the content is still loading - e.g. if
the content type isn't permissable in the context it was loaded from).
Fixes 1627413, 1580980.
svn path=/trunk/netsurf/; revision=3212
Diffstat (limited to 'css/css.c')
-rw-r--r-- | css/css.c | 13 |
1 files changed, 8 insertions, 5 deletions
@@ -470,13 +470,16 @@ void css_destroy(struct content *c) unsigned int i; struct css_selector *r; - for (i = 0; i != HASH_SIZE; i++) { - for (r = c->data.css.css->rule[i]; r != 0; r = r->next) { - css_deep_free_style(r->style); + if (c->data.css.css) { + for (i = 0; i != HASH_SIZE; i++) { + for (r = c->data.css.css->rule[i]; r != 0; + r = r->next) { + css_deep_free_style(r->style); + } + css_free_selector(c->data.css.css->rule[i]); } - css_free_selector(c->data.css.css->rule[i]); + free(c->data.css.css); } - free(c->data.css.css); /* imported stylesheets */ for (i = 0; i != c->data.css.import_count; i++) |