From 85ad756fdffcfc8fcc306f5e46d750b769860ec0 Mon Sep 17 00:00:00 2001 From: "dbaron%dbaron.org" Date: Sat, 25 Sep 2004 06:22:48 +0000 Subject: [PATCH] Slightly better fix for crashes. b=96108 r=neil sr=bzbarsky a=asa git-svn-id: svn://10.0.0.236/trunk@162785 18797224-902f-48f8-a5cc-f745e15eee43 --- .../editor/libeditor/html/nsHTMLEditRules.cpp | 20 ++++++++----------- 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/mozilla/editor/libeditor/html/nsHTMLEditRules.cpp b/mozilla/editor/libeditor/html/nsHTMLEditRules.cpp index b820ab33990..fcded92c68f 100644 --- a/mozilla/editor/libeditor/html/nsHTMLEditRules.cpp +++ b/mozilla/editor/libeditor/html/nsHTMLEditRules.cpp @@ -3352,14 +3352,13 @@ nsHTMLEditRules::WillMakeBasicBlock(nsISelection *aSelection, // remember our new block for postprocessing mNewBlock = theBlock; // delete anything that was in the list of nodes - nsCOMPtr curNode = arrayOfNodes.SafeObjectAt(0); - while (curNode) + for (PRInt32 j = arrayOfNodes.Count() - 1; j >= 0; --j) { + nsCOMPtr curNode = arrayOfNodes[0]; res = mHTMLEditor->DeleteNode(curNode); if (NS_FAILED(res)) return res; res = arrayOfNodes.RemoveObjectAt(0); if (NS_FAILED(res)) return res; - curNode = arrayOfNodes.SafeObjectAt(0); } // put selection in new block res = aSelection->Collapse(theBlock,0); @@ -3493,14 +3492,13 @@ nsHTMLEditRules::WillCSSIndent(nsISelection *aSelection, PRBool *aCancel, PRBool mNewBlock = theBlock; RelativeChangeIndentationOfElementNode(theBlock, +1); // delete anything that was in the list of nodes - nsCOMPtr curNode = arrayOfNodes.SafeObjectAt(0); - while (curNode) + for (PRInt32 j = arrayOfNodes.Count() - 1; j >= 0; --j) { + nsCOMPtr curNode = arrayOfNodes[0]; res = mHTMLEditor->DeleteNode(curNode); if (NS_FAILED(res)) return res; res = arrayOfNodes.RemoveObjectAt(0); if (NS_FAILED(res)) return res; - curNode = arrayOfNodes.SafeObjectAt(0); } // put selection in new block res = aSelection->Collapse(theBlock,0); @@ -3640,14 +3638,13 @@ nsHTMLEditRules::WillHTMLIndent(nsISelection *aSelection, PRBool *aCancel, PRBoo // remember our new block for postprocessing mNewBlock = theBlock; // delete anything that was in the list of nodes - nsCOMPtr curNode = arrayOfNodes.SafeObjectAt(0); - while (curNode) + for (PRInt32 j = arrayOfNodes.Count() - 1; j >= 0; --j) { + nsCOMPtr curNode = arrayOfNodes[0]; res = mHTMLEditor->DeleteNode(curNode); if (NS_FAILED(res)) return res; res = arrayOfNodes.RemoveObjectAt(0); if (NS_FAILED(res)) return res; - curNode = arrayOfNodes.SafeObjectAt(0); } // put selection in new block res = aSelection->Collapse(theBlock,0); @@ -8701,14 +8698,13 @@ nsHTMLEditRules::WillAbsolutePosition(nsISelection *aSelection, PRBool *aCancel, // remember our new block for postprocessing mNewBlock = thePositionedDiv; // delete anything that was in the list of nodes - nsCOMPtr curNode = arrayOfNodes.SafeObjectAt(0); - while (curNode) + for (PRInt32 j = arrayOfNodes.Count() - 1; j >= 0; --j) { + nsCOMPtr curNode = arrayOfNodes[0]; res = mHTMLEditor->DeleteNode(curNode); if (NS_FAILED(res)) return res; res = arrayOfNodes.RemoveObjectAt(0); if (NS_FAILED(res)) return res; - curNode = arrayOfNodes.SafeObjectAt(0); } // put selection in new block res = aSelection->Collapse(thePositionedDiv,0);