aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbors-servo <metajack+bors@gmail.com>2015-04-28 15:32:31 -0500
committerbors-servo <metajack+bors@gmail.com>2015-04-28 15:32:31 -0500
commitb6fc83cf2b4b426548bb9d10e9493f2b111bd617 (patch)
treea7cf20c9bc9266354d7e0281e9c3c42eb09fe388
parentb5beebbc6280f5ff6397b6a9154b705d42d000e7 (diff)
parent577f1ea109e591c12b692511c8810ba7078be838 (diff)
downloadservo-b6fc83cf2b4b426548bb9d10e9493f2b111bd617.tar.gz
servo-b6fc83cf2b4b426548bb9d10e9493f2b111bd617.zip
Auto merge of #5887 - pcwalton:border-collapse-missing-cells, r=mbrubeck
This was seen in Twitter and the Google SERPs (sometimes). r? @mbrubeck <!-- Reviewable:start --> [<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/5887) <!-- Reviewable:end -->
-rw-r--r--components/layout/table.rs4
-rw-r--r--tests/ref/basic.list1
-rw-r--r--tests/ref/border_collapse_missing_cell_a.html24
-rw-r--r--tests/ref/border_collapse_missing_cell_ref.html24
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>