+2004-07-12 David Hyatt <hyatt@apple.com>
+
+ Fix for 3621138, crash on hrweb.apple.com. Make sure that in the case where objects get pulled up from merging
+ blocks that we just delete all line boxes.
+
+ Reviewed by kocienda
+
+ * khtml/rendering/render_block.cpp:
+ (khtml::RenderBlock::removeChild):
+
2004-07-10 Maciej Stachowiak <mjs@apple.com>
Reviewed by John.
}
}
-void RenderBlock::removeChildrenFromLineBoxes()
-{
- // In the case where we do a collapse/merge from the destruction
- // of a block in between two anonymous blocks with inlines (see removeChild in render_block.cpp),
- // we have line boxes that need to have their parents nulled.
- KHTMLAssert(!documentBeingDestroyed());
- for (InlineFlowBox* box = m_firstLineBox; box; box = box->nextFlowBox())
- for (InlineBox* child = box->firstChild(); child; child = child->nextOnLine())
- child->remove();
-}
-
void RenderBlock::removeChild(RenderObject *oldChild)
{
// If this child is a block, and if our previous and next siblings are
if (!documentBeingDestroyed() && !isInline() && !oldChild->isInline() && !oldChild->continuation() &&
prev && prev->isAnonymousBlock() && prev->childrenInline() &&
next && next->isAnonymousBlock() && next->childrenInline()) {
- // Clean up the line box children inside |next|.
- static_cast<RenderBlock*>(next)->removeChildrenFromLineBoxes();
-
// Take all the children out of the |next| block and put them in
// the |prev| block.
RenderObject* o = next->firstChild();
appendChildNode(anonBlock->removeChildNode(no));
no->setNeedsLayoutAndMinMaxRecalc();
}
-
+ setNeedsLayoutAndMinMaxRecalc();
+
// Nuke the now-empty block.
anonBlock->detach();
}