Prevent crash caused by trigger-happy deletion of frames during Bidi resolution. Bug 95228, r=lkemmel@il.ibm.com, sr=waterson

This commit is contained in:
smontagu%netscape.com 2002-04-22 22:55:19 +00:00
parent 81bdbc110c
commit a3b1208204
2 changed files with 24 additions and 10 deletions

View File

@ -832,12 +832,19 @@ nsBidiPresUtils::RemoveBidiContinuation(nsIPresContext* aPresContext,
delete frame;
++aOffset;
}
else if (parent != nsnull) {
parent->RemoveFrame(aPresContext, *presShell, nsLayoutAtoms::nextBidi,
frame);
}
else {
frame->Destroy(aPresContext);
nsFrameState frameState;
frame->GetFrameState(&frameState);
if (frameState & NS_FRAME_IS_BIDI) {
// only delete Bidi frames
if (parent != nsnull) {
parent->RemoveFrame(aPresContext, *presShell,
nsLayoutAtoms::nextBidi, frame);
}
else {
frame->Destroy(aPresContext);
}
}
}
}
if (aNextFrame) {

View File

@ -832,12 +832,19 @@ nsBidiPresUtils::RemoveBidiContinuation(nsIPresContext* aPresContext,
delete frame;
++aOffset;
}
else if (parent != nsnull) {
parent->RemoveFrame(aPresContext, *presShell, nsLayoutAtoms::nextBidi,
frame);
}
else {
frame->Destroy(aPresContext);
nsFrameState frameState;
frame->GetFrameState(&frameState);
if (frameState & NS_FRAME_IS_BIDI) {
// only delete Bidi frames
if (parent != nsnull) {
parent->RemoveFrame(aPresContext, *presShell,
nsLayoutAtoms::nextBidi, frame);
}
else {
frame->Destroy(aPresContext);
}
}
}
}
if (aNextFrame) {