summaryrefslogtreecommitdiff
path: root/render/box.c
diff options
context:
space:
mode:
Diffstat (limited to 'render/box.c')
-rw-r--r--render/box.c11
1 files changed, 9 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;