зеркало из https://github.com/mozilla/pjs.git
Fix for crash on startup -- don't use nsCOMPtr on frame-derived things, becaue they are not refcounted, and this causes nsCOMPtr to delete the frame on destructions.
This commit is contained in:
Родитель
fcdec2a951
Коммит
5e146f4ce5
|
@ -160,10 +160,13 @@ nsBoxFrame::GetChildBoxInfo(nsIPresContext& aPresContext, const nsHTMLReflowStat
|
||||||
aSize.clear();
|
aSize.clear();
|
||||||
|
|
||||||
// see if the frame implements IBox interface
|
// see if the frame implements IBox interface
|
||||||
nsCOMPtr<nsIBox> ibox = do_QueryInterface(aFrame);
|
|
||||||
|
// since frames are not refCounted, don't use nsCOMPtr with them
|
||||||
|
//nsCOMPtr<nsIBox> ibox = do_QueryInterface(aFrame);
|
||||||
|
|
||||||
// if it does ask it for its BoxSize and we are done
|
// if it does ask it for its BoxSize and we are done
|
||||||
if (ibox) {
|
nsIBox* ibox;
|
||||||
|
if (NS_SUCCEEDED(aFrame->QueryInterface(nsIBox::GetIID(), (void**)&ibox)) && ibox) {
|
||||||
ibox->GetBoxInfo(aPresContext, aReflowState, aSize);
|
ibox->GetBoxInfo(aPresContext, aReflowState, aSize);
|
||||||
// add in the border, padding, width, min, max
|
// add in the border, padding, width, min, max
|
||||||
GetRedefinedMinPrefMax(aFrame, aSize);
|
GetRedefinedMinPrefMax(aFrame, aSize);
|
||||||
|
@ -1105,8 +1108,10 @@ nsBoxFrame::Dirty(const nsHTMLReflowState& aReflowState, nsIFrame*& incrementalC
|
||||||
if (childFrame == frame) {
|
if (childFrame == frame) {
|
||||||
// clear the spring so it is recalculated on the flow
|
// clear the spring so it is recalculated on the flow
|
||||||
mSprings[count].clear();
|
mSprings[count].clear();
|
||||||
nsCOMPtr<nsIBox> ibox = do_QueryInterface(childFrame);
|
//nsCOMPtr<nsIBox> ibox = do_QueryInterface(childFrame);
|
||||||
if (ibox)
|
// can't use nsCOMPtr on non-refcounted things like frames
|
||||||
|
nsIBox* ibox;
|
||||||
|
if (NS_SUCCEEDED(childFrame->QueryInterface(nsIBox::GetIID(), (void**)&ibox)) && ibox)
|
||||||
ibox->Dirty(aReflowState, incrementalChild);
|
ibox->Dirty(aReflowState, incrementalChild);
|
||||||
else
|
else
|
||||||
incrementalChild = frame;
|
incrementalChild = frame;
|
||||||
|
|
Загрузка…
Ссылка в новой задаче