diff options
author | Daniel Silverstone <dsilvers@netsurf-browser.org> | 2011-01-19 21:15:23 +0000 |
---|---|---|
committer | Daniel Silverstone <dsilvers@netsurf-browser.org> | 2011-01-19 21:15:23 +0000 |
commit | cd7293320173dfa5ae12810ec51b0708c8bae924 (patch) | |
tree | 69d0bab3af1a3ebd47678f1a22bb47f7dc4ce17f | |
parent | f85335a7f9fdbff012409bb2af8fecc81740eab0 (diff) | |
download | netsurf-cd7293320173dfa5ae12810ec51b0708c8bae924.tar.gz netsurf-cd7293320173dfa5ae12810ec51b0708c8bae924.tar.bz2 |
Ensure we free more of the css stuff for the box model.
svn path=/trunk/netsurf/; revision=11399
-rw-r--r-- | render/box.c | 11 | ||||
-rw-r--r-- | render/box.h | 2 |
2 files changed, 11 insertions, 2 deletions
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; diff --git a/render/box.h b/render/box.h index f8c85627b..5ca366497 100644 --- a/render/box.h +++ b/render/box.h @@ -141,6 +141,8 @@ struct box { * a box's 'styles' select results, except for implied boxes, where it * is a pointer to an owned computed style. */ css_computed_style *style; + /** Whether the style is owned by this box. */ + bool style_owned; /** Coordinate of left padding edge relative to parent box, or relative * to ancestor that contains this box in float_children for FLOAT_. */ |