Fix crash when recreating <caption> frames. Add ASSERTIONs to detect similar frame construction errors in the future. b=341382 r+sr=bzbarsky

This commit is contained in:
mats.palmgren@bredband.net
2006-06-29 02:32:36 +00:00
parent 4a93e16131
commit c543d48c5c
14 changed files with 149 additions and 36 deletions

View File

@@ -211,6 +211,8 @@ NS_IMETHODIMP
nsTableColGroupFrame::AppendFrames(nsIAtom* aListName,
nsIFrame* aFrameList)
{
NS_ASSERTION(!aListName, "unexpected child list");
nsTableColFrame* col = GetFirstColumn();
nsTableColFrame* nextCol;
while (col && col->GetColType() == eColAnonymousColGroup) {
@@ -228,9 +230,13 @@ nsTableColGroupFrame::AppendFrames(nsIAtom* aListName,
NS_IMETHODIMP
nsTableColGroupFrame::InsertFrames(nsIAtom* aListName,
nsIFrame* aPrevFrameIn,
nsIFrame* aPrevFrame,
nsIFrame* aFrameList)
{
NS_ASSERTION(!aListName, "unexpected child list");
NS_ASSERTION(!aPrevFrame || aPrevFrame->GetParent() == this,
"inserting after sibling frame with different parent");
nsFrameList frames(aFrameList); // convience for getting last frame
nsIFrame* lastFrame = frames.LastChild();
@@ -244,8 +250,8 @@ nsTableColGroupFrame::InsertFrames(nsIAtom* aListName,
col = nextCol;
}
mFrames.InsertFrames(this, aPrevFrameIn, aFrameList);
nsIFrame* prevFrame = nsTableFrame::GetFrameAtOrBefore(this, aPrevFrameIn,
mFrames.InsertFrames(this, aPrevFrame, aFrameList);
nsIFrame* prevFrame = nsTableFrame::GetFrameAtOrBefore(this, aPrevFrame,
nsLayoutAtoms::tableColFrame);
PRInt32 colIndex = (prevFrame) ? ((nsTableColFrame*)prevFrame)->GetColIndex() + 1 : GetStartColumnIndex();
@@ -309,6 +315,8 @@ NS_IMETHODIMP
nsTableColGroupFrame::RemoveFrame(nsIAtom* aListName,
nsIFrame* aOldFrame)
{
NS_ASSERTION(!aListName, "unexpected child list");
if (!aOldFrame) return NS_OK;
if (nsLayoutAtoms::tableColFrame == aOldFrame->GetType()) {