From cd7293320173dfa5ae12810ec51b0708c8bae924 Mon Sep 17 00:00:00 2001 From: Daniel Silverstone Date: Wed, 19 Jan 2011 21:15:23 +0000 Subject: Ensure we free more of the css stuff for the box model. svn path=/trunk/netsurf/; revision=11399 --- render/box.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'render/box.c') diff --git a/render/box.c b/render/box.c index 613b8c355..d49ae56fa 100644 --- a/render/box.c +++ b/render/box.c @@ -85,8 +85,14 @@ void *box_style_alloc(void *ptr, size_t len, void *pw) static int free_box_style(struct box *b) { - if (b->style != NULL) { + if (b->style_owned && b->style != NULL) { css_computed_style_destroy(b->style); + b->style = NULL; + } + + if (b->styles != NULL) { + css_select_results_destroy(b->styles); + b->styles = NULL; } return 0; @@ -121,12 +127,13 @@ struct box * box_create(css_select_results *styles, css_computed_style *style, return 0; } - if (style_owned == true) + if (style_owned == true || styles != NULL) talloc_set_destructor(box, free_box_style); box->type = BOX_INLINE; box->styles = styles; box->style = style; + box->style_owned = style_owned; box->x = box->y = 0; box->width = UNKNOWN_WIDTH; box->height = 0; -- cgit v1.2.3