diff --git a/render/html.c b/render/html.c
index 568613fc8..dc6646821 100644
--- a/render/html.c
+++ b/render/html.c
@@ -418,10 +418,7 @@ void html_object_callback(content_msg msg, struct content *object,
/* invalidate parent min, max widths */
if (box->parent && box->parent->max_width != UNKNOWN_MAX_WIDTH) {
struct box *b = box->parent;
- if (b->min_width < object->width)
- b->min_width = object->width;
- if (b->max_width < object->width)
- b->max_width = object->width;
+ b->max_width = UNKNOWN_MAX_WIDTH;
for (b = b->parent; b != 0 &&
(b->type == BOX_TABLE_ROW_GROUP ||
b->type == BOX_TABLE_ROW ||
diff --git a/render/layout.c b/render/layout.c
index 7474f2755..ea3ea06b7 100644
--- a/render/layout.c
+++ b/render/layout.c
@@ -931,10 +931,8 @@ void calculate_table_widths(struct box *table)
if (table->max_width != UNKNOWN_MAX_WIDTH)
return;
- if (table->col)
- col = table->col;
- else
- col = xcalloc(table->columns, sizeof(*col));
+ free(table->col);
+ table->col = col = xcalloc(table->columns, sizeof(*col));
assert(table->children != 0 && table->children->children != 0);
@@ -1082,7 +1080,6 @@ void calculate_table_widths(struct box *table)
}
table->min_width = min_width;
table->max_width = max_width;
- table->col = col;
LOG(("min_width %lu, max_width %lu", min_width, max_width));
}