Bug 696640 - Don't put an existing next-in-flow for the kid into 'rowGroups' - it's either already there or it's not our child. r=roc

This commit is contained in:
Mats Palmgren 2012-12-17 02:21:36 +01:00
parent f3df68b8d2
commit 796be0f635
4 changed files with 542 additions and 12 deletions

View File

@ -0,0 +1,47 @@
<!DOCTYPE html>
<html class="reftest-print">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="flags" content="paged">
<title> crash at A4 90% generated content + repeatable tfoot</title>
<link rel="author" title="Mats Palmgren" href="https://bugzilla.mozilla.org/show_bug.cgi?id=696640">
<style type="text/css">
@page { size:5in 3in; margin:0.5in; }
html,body {
color:black; background-color:white; font-size:16px; padding:0; margin:0; height:100%;
}
.LayoutBreakAfter:after {
clear: both;
display: block;
height: 0;
content: "\0020";
}
td { width:0.1in; height:0.1in; }
div.spacer { width:50%; height:1.7in; }
</style>
</head>
<body>
<div class="spacer"></div>
<div class="LayoutBreakAfter">
<div style="float:left">
<table>
<tbody >
<tr>
<td>
</td>
</tr>
</tbody>
<tfoot>
<tr>
<td >
</td>
</tr>
</tfoot>
</table>
</div>
</div>
</body>
</html>

View File

@ -0,0 +1,486 @@
<!DOCTYPE html>
<html class="reftest-print">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="flags" content="paged">
<link rel="author" title="Mats Palmgren" href="https://bugzilla.mozilla.org/show_bug.cgi?id=696640">
<style type="text/css">
@page { size:5in 3in; margin:0.5in; }
html,body {
color:black; background-color:white; font-size:16px; padding:0; margin:0; height:100%;
}
#yui-main { float: left;}
#bd:after { content: "."; display: block; clear: both; }
</style>
</head>
<body>
<div id="bd">
<div id="yui-main">
<table>
<tbody>
<tr>
<td><a href="http://football.fantasysports.yahoo.com/bowl/55789">i</a></td>
<td> </td>
<td> </td>
<td></td>
<td>vs</td>
<td></td>
<td><em>vs.</em> </td>
<td></td>
<td></td>
</tr>
<tr>
<td><a href="http://football.fantasysports.yahoo.com/bowl/55789">i</a></td>
<td> </td>
<td> </td>
<td></td>
<td>vs</td>
<td></td>
<td><em>vs.</em> </td>
<td></td>
<td></td>
</tr>
<tr>
<td><a href="http://football.fantasysports.yahoo.com/bowl/55789">i</a></td>
<td> </td>
<td> </td>
<td></td>
<td>vs</td>
<td></td>
<td><em>vs.</em> </td>
<td></td>
<td></td>
</tr>
<tr>
<td><a href="http://football.fantasysports.yahoo.com/bowl/55789">i</a></td>
<td> </td>
<td> </td>
<td></td>
<td>vs</td>
<td></td>
<td><em>vs.</em> </td>
<td></td>
<td></td>
</tr>
<tr>
<td><a href="http://football.fantasysports.yahoo.com/bowl/55789">i</a></td>
<td> </td>
<td> </td>
<td></td>
<td>vs</td>
<td></td>
<td><em>vs.</em> </td>
<td></td>
<td></td>
</tr>
<tr>
<td><a href="http://football.fantasysports.yahoo.com/bowl/55789">i</a></td>
<td> </td>
<td> </td>
<td></td>
<td>vs</td>
<td></td>
<td><em>vs.</em> </td>
<td></td>
<td></td>
</tr>
<tr>
<td><a href="http://football.fantasysports.yahoo.com/bowl/55789">i</a></td>
<td> </td>
<td> </td>
<td></td>
<td>vs</td>
<td></td>
<td><em>vs.</em> </td>
<td></td>
<td></td>
</tr>
<tr>
<td><a href="http://football.fantasysports.yahoo.com/bowl/55789">i</a></td>
<td> </td>
<td> </td>
<td></td>
<td>vs</td>
<td></td>
<td><em>vs.</em> </td>
<td></td>
<td></td>
</tr>
<tr>
<td><a href="http://football.fantasysports.yahoo.com/bowl/55789">i</a></td>
<td> </td>
<td> </td>
<td></td>
<td>vs</td>
<td></td>
<td><em>vs.</em> </td>
<td></td>
<td></td>
</tr>
<tr>
<td><a href="http://football.fantasysports.yahoo.com/bowl/55789">i</a></td>
<td> </td>
<td> </td>
<td></td>
<td>vs</td>
<td></td>
<td><em>vs.</em> </td>
<td></td>
<td></td>
</tr>
<tr>
<td><a href="http://football.fantasysports.yahoo.com/bowl/55789">i</a></td>
<td> </td>
<td> </td>
<td></td>
<td>vs</td>
<td></td>
<td><em>vs.</em> </td>
<td></td>
<td></td>
</tr>
<tr>
<td><a href="http://football.fantasysports.yahoo.com/bowl/55789">i</a></td>
<td> </td>
<td> </td>
<td></td>
<td>vs</td>
<td></td>
<td><em>vs.</em> </td>
<td></td>
<td></td>
</tr>
<tr>
<td><a href="http://football.fantasysports.yahoo.com/bowl/55789">i</a></td>
<td> </td>
<td> </td>
<td></td>
<td>vs</td>
<td></td>
<td><em>vs.</em> </td>
<td></td>
<td></td>
</tr>
<tr>
<td><a href="http://football.fantasysports.yahoo.com/bowl/55789">i</a></td>
<td> </td>
<td> </td>
<td></td>
<td>vs</td>
<td></td>
<td><em>vs.</em> </td>
<td></td>
<td></td>
</tr>
<tr>
<td><a href="http://football.fantasysports.yahoo.com/bowl/55789">i</a></td>
<td> </td>
<td> </td>
<td></td>
<td>vs</td>
<td></td>
<td><em>vs.</em> </td>
<td></td>
<td></td>
</tr>
<tr>
<td><a href="http://football.fantasysports.yahoo.com/bowl/55789">i</a></td>
<td> </td>
<td> </td>
<td></td>
<td>vs</td>
<td></td>
<td><em>vs.</em> </td>
<td></td>
<td></td>
</tr>
<tr>
<td><a href="http://football.fantasysports.yahoo.com/bowl/55789">i</a></td>
<td> </td>
<td> </td>
<td></td>
<td>vs</td>
<td></td>
<td><em>vs.</em> </td>
<td></td>
<td></td>
</tr>
<tr>
<td><a href="http://football.fantasysports.yahoo.com/bowl/55789">i</a></td>
<td> </td>
<td> </td>
<td></td>
<td>vs</td>
<td></td>
<td><em>vs.</em> </td>
<td></td>
<td></td>
</tr>
<tr>
<td><a href="http://football.fantasysports.yahoo.com/bowl/55789">i</a></td>
<td> </td>
<td> </td>
<td></td>
<td>vs</td>
<td></td>
<td><em>vs.</em> </td>
<td></td>
<td></td>
</tr>
<tr>
<td><a href="http://football.fantasysports.yahoo.com/bowl/55789">i</a></td>
<td> </td>
<td> </td>
<td></td>
<td>vs</td>
<td></td>
<td><em>vs.</em> </td>
<td></td>
<td></td>
</tr>
<tr>
<td><a href="http://football.fantasysports.yahoo.com/bowl/55789">i</a></td>
<td> </td>
<td> </td>
<td></td>
<td>vs</td>
<td></td>
<td><em>vs.</em> </td>
<td></td>
<td></td>
</tr>
<tr>
<td><a href="http://football.fantasysports.yahoo.com/bowl/55789">i</a></td>
<td> </td>
<td> </td>
<td></td>
<td>vs</td>
<td></td>
<td><em>vs.</em> </td>
<td></td>
<td></td>
</tr>
<tr>
<td><a href="http://football.fantasysports.yahoo.com/bowl/55789">i</a></td>
<td> </td>
<td> </td>
<td></td>
<td>vs</td>
<td></td>
<td><em>vs.</em> </td>
<td></td>
<td></td>
</tr>
<tr>
<td><a href="http://football.fantasysports.yahoo.com/bowl/55789">i</a></td>
<td> </td>
<td> </td>
<td></td>
<td>vs</td>
<td></td>
<td><em>vs.</em> </td>
<td></td>
<td></td>
</tr>
<tr>
<td><a href="http://football.fantasysports.yahoo.com/bowl/55789">i</a></td>
<td> </td>
<td> </td>
<td></td>
<td>vs</td>
<td></td>
<td><em>vs.</em> </td>
<td></td>
<td></td>
</tr>
<tr>
<td><a href="http://football.fantasysports.yahoo.com/bowl/55789">i</a></td>
<td> </td>
<td> </td>
<td></td>
<td>vs</td>
<td></td>
<td><em>vs.</em> </td>
<td></td>
<td></td>
</tr>
<tr>
<td><a href="http://football.fantasysports.yahoo.com/bowl/55789">i</a></td>
<td> </td>
<td> </td>
<td></td>
<td>vs</td>
<td></td>
<td><em>vs.</em> </td>
<td></td>
<td></td>
</tr>
<tr>
<td><a href="http://football.fantasysports.yahoo.com/bowl/55789">i</a></td>
<td> </td>
<td> </td>
<td></td>
<td>vs</td>
<td></td>
<td><em>vs.</em> </td>
<td></td>
<td></td>
</tr>
<tr>
<td><a href="http://football.fantasysports.yahoo.com/bowl/55789">i</a></td>
<td> </td>
<td> </td>
<td></td>
<td>vs</td>
<td></td>
<td><em>vs.</em> </td>
<td></td>
<td></td>
</tr>
<tr>
<td><a href="http://football.fantasysports.yahoo.com/bowl/55789">i</a></td>
<td> </td>
<td> </td>
<td></td>
<td>vs</td>
<td></td>
<td><em>vs.</em> </td>
<td></td>
<td></td>
</tr>
<tr>
<td><a href="http://football.fantasysports.yahoo.com/bowl/55789">i</a></td>
<td> </td>
<td> </td>
<td></td>
<td>vs</td>
<td></td>
<td><em>vs.</em> </td>
<td></td>
<td></td>
</tr>
<tr>
<td><a href="http://football.fantasysports.yahoo.com/bowl/55789">i</a></td>
<td> </td>
<td> </td>
<td></td>
<td>vs</td>
<td></td>
<td><em>vs.</em> </td>
<td></td>
<td></td>
</tr>
<tr>
<td><a href="http://football.fantasysports.yahoo.com/bowl/55789">i</a></td>
<td> </td>
<td> </td>
<td></td>
<td>vs</td>
<td></td>
<td><em>vs.</em> </td>
<td></td>
<td></td>
</tr>
<tr>
<td><a href="http://football.fantasysports.yahoo.com/bowl/55789">i</a></td>
<td> </td>
<td> </td>
<td></td>
<td>vs</td>
<td></td>
<td><em>vs.</em> </td>
<td></td>
<td></td>
</tr>
<tr>
<td><a href="http://football.fantasysports.yahoo.com/bowl/55789">i</a></td>
<td> </td>
<td> </td>
<td></td>
<td>vs</td>
<td></td>
<td><em>vs.</em> </td>
<td></td>
<td></td>
</tr>
</tbody>
<tfoot>
<tr >
<td colspan="8"><p><b >Total Points</b></p></td>
<td colspan="2" >0</td>
</tr>
</tfoot>
</table>
</div>
</div>
</body>
</html>

View File

@ -120,6 +120,8 @@ load 595758-2.xhtml
load 678447-1.html
skip-if(Android) load 691824-1.xhtml # Bug 694248
load 695430-1.html
load 696640-1.html
load 696640-2.html
load 707622-1.html
load 705996-1.html
load 705996-2.html

View File

@ -2938,29 +2938,24 @@ nsTableFrame::ReflowChildren(nsTableReflowState& aReflowState,
break;
}
// Insert the continuing frame into the sibling list.
// Insert the kid's new next-in-flow into our sibling list...
mFrames.InsertFrame(nullptr, kidFrame, kidNextInFlow);
// Fall through and update |rowGroups| with the new rowgroup, just as
// it would have been if we had called OrderRowGroups again.
// Note that rowGroups doesn't get used again after we PushChildren
// below, anyway.
// and in rowGroups after childX so that it will get pushed below.
rowGroups.InsertElementAt(childX + 1,
static_cast <nsTableRowGroupFrame*>(kidNextInFlow));
}
// Put the nextinflow so that it will get pushed
rowGroups.InsertElementAt(childX + 1,
static_cast <nsTableRowGroupFrame*>(kidNextInFlow));
// We've used up all of our available space so push the remaining
// children to the next-in-flow
// children.
if (allowRepeatedFooter) {
PlaceRepeatedFooter(aReflowState, tfoot, footerHeight);
}
else if (tfoot && tfoot->IsRepeatable()) {
tfoot->SetRepeatable(false);
}
nsIFrame* nextSibling = kidFrame->GetNextSibling();
if (nullptr != nextSibling) {
if (nextSibling) {
PushChildren(rowGroups, childX + 1);
}
break;