diff --git a/components/layout/table.rs b/components/layout/table.rs index 9ad018f622e..81cde44bba6 100644 --- a/components/layout/table.rs +++ b/components/layout/table.rs @@ -681,13 +681,18 @@ fn perform_border_collapse_for_row(child_table_row: &mut TableRowFlow, } // Compute block-start borders. - match previous_block_borders { - PreviousBlockCollapsedBorders::FromPreviousRow(previous_block_borders) => { - child_table_row.final_collapsed_borders.block_start = previous_block_borders - } - PreviousBlockCollapsedBorders::FromTable(collapsed_border) => { - child_table_row.final_collapsed_borders.block_start = - vec![collapsed_border; child_table_row.block_flow.base.children.len()] + let block_start_borders = &mut child_table_row.final_collapsed_borders.block_start; + *block_start_borders = child_table_row.preliminary_collapsed_borders.block_start.clone(); + for (i, this_border) in block_start_borders.iter_mut().enumerate() { + match previous_block_borders { + PreviousBlockCollapsedBorders::FromPreviousRow(ref previous_block_borders) => { + if previous_block_borders.len() > i { + this_border.combine(&previous_block_borders[i]); + } + } + PreviousBlockCollapsedBorders::FromTable(table_border) => { + this_border.combine(&table_border); + } } } diff --git a/tests/wpt/metadata-css/css21_dev/html4/border-conflict-element-001c.htm.ini b/tests/wpt/metadata-css/css21_dev/html4/border-conflict-element-001c.htm.ini deleted file mode 100644 index 5a37b1e0193..00000000000 --- a/tests/wpt/metadata-css/css21_dev/html4/border-conflict-element-001c.htm.ini +++ /dev/null @@ -1,3 +0,0 @@ -[border-conflict-element-001c.htm] - type: reftest - expected: FAIL