diff options
-rw-r--r-- | components/layout/table.rs | 4 | ||||
-rw-r--r-- | tests/ref/basic.list | 1 | ||||
-rw-r--r-- | tests/ref/border_collapse_missing_cell_a.html | 24 | ||||
-rw-r--r-- | tests/ref/border_collapse_missing_cell_ref.html | 24 |
4 files changed, 52 insertions, 1 deletions
diff --git a/components/layout/table.rs b/components/layout/table.rs index 80edfa2742e..eeb11d4a29a 100644 --- a/components/layout/table.rs +++ b/components/layout/table.rs @@ -760,7 +760,9 @@ fn perform_border_collapse_for_row(child_table_row: &mut TableRowFlow, let next_block = next_block.push_or_mutate(i, *this_block_border); match next_block_borders { NextBlockCollapsedBorders::FromNextRow(next_block_borders) => { - next_block.combine(&next_block_borders[i]); + if next_block_borders.len() > i { + next_block.combine(&next_block_borders[i]) + } } NextBlockCollapsedBorders::FromTable(ref next_block_borders) => { next_block.combine(next_block_borders); diff --git a/tests/ref/basic.list b/tests/ref/basic.list index a74da9f7fe0..5e77d0b9f4c 100644 --- a/tests/ref/basic.list +++ b/tests/ref/basic.list @@ -81,6 +81,7 @@ flaky_cpu == append_style_a.html append_style_b.html != border_black_ridge.html border_black_groove.html != border_black_ridge.html border_black_solid.html == border_code_tag.html border_code_tag_ref.html +== border_collapse_missing_cell_a.html border_collapse_missing_cell_ref.html == border_collapse_simple_a.html border_collapse_simple_ref.html == border_radius_clip_a.html border_radius_clip_ref.html == border_radius_overlapping_a.html border_radius_overlapping_ref.html diff --git a/tests/ref/border_collapse_missing_cell_a.html b/tests/ref/border_collapse_missing_cell_a.html new file mode 100644 index 00000000000..023ea8c541b --- /dev/null +++ b/tests/ref/border_collapse_missing_cell_a.html @@ -0,0 +1,24 @@ +<!DOCTYPE html> +<html> +<head> +<!-- Tests that missing cells don't cause a crash in border collapse code. --> +<style> +table { + border-collapse: collapse; +} +</style> +</head> +<body> + <table> + <tr> + <td>United States</td> + <td>40404</td> + <td>(any)</td> + </tr> + <tr> + <td>3424486444</td> + <td>Vodafone</td> + </tr> + </table> +</body> +</html> diff --git a/tests/ref/border_collapse_missing_cell_ref.html b/tests/ref/border_collapse_missing_cell_ref.html new file mode 100644 index 00000000000..023ea8c541b --- /dev/null +++ b/tests/ref/border_collapse_missing_cell_ref.html @@ -0,0 +1,24 @@ +<!DOCTYPE html> +<html> +<head> +<!-- Tests that missing cells don't cause a crash in border collapse code. --> +<style> +table { + border-collapse: collapse; +} +</style> +</head> +<body> + <table> + <tr> + <td>United States</td> + <td>40404</td> + <td>(any)</td> + </tr> + <tr> + <td>3424486444</td> + <td>Vodafone</td> + </tr> + </table> +</body> +</html> |