Declare nsCOMPtrs outside of do-while loops to avoid gcc 2.x -O2 optimization bug.

Bug #96911 r=jfrancis sr=kin a=blizzard


git-svn-id: svn://10.0.0.236/trunk@102146 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
cls%seawood.org
2001-09-01 17:24:08 +00:00
parent f7762a4e47
commit 3736408869
2 changed files with 12 additions and 8 deletions

View File

@@ -3254,8 +3254,9 @@ nsEditor::GetPriorNode(nsIDOMNode *aCurrentNode,
// otherwise, walk up the parent change until there is a child that comes before
// the ancestor of aCurrentNode. Then return that node's rightmost child
nsCOMPtr<nsIDOMNode> parent = do_QueryInterface(aCurrentNode);
nsCOMPtr<nsIDOMNode> node, notEditableNode;
do {
nsCOMPtr<nsIDOMNode> node(parent);
node = parent;
result = node->GetParentNode(getter_AddRefs(parent));
if ((NS_SUCCEEDED(result)) && parent)
{
@@ -3289,7 +3290,7 @@ nsEditor::GetPriorNode(nsIDOMNode *aCurrentNode,
if (IsEditable(*aResultNode)) return result;
else
{ // restart the search from the non-editable node we just found
nsCOMPtr<nsIDOMNode> notEditableNode = do_QueryInterface(*aResultNode);
notEditableNode = do_QueryInterface(*aResultNode);
return GetPriorNode(notEditableNode, aEditableNode, aResultNode, bNoBlockCrossing);
}
}
@@ -3354,8 +3355,9 @@ nsEditor::GetNextNode(nsIDOMNode *aCurrentNode,
// the ancestor of aCurrentNode. Then return that node's leftmost child
nsCOMPtr<nsIDOMNode> parent(do_QueryInterface(aCurrentNode));
nsCOMPtr<nsIDOMNode> node, notEditableNode;
do {
nsCOMPtr<nsIDOMNode> node(parent);
node = parent;
result = node->GetParentNode(getter_AddRefs(parent));
if ((NS_SUCCEEDED(result)) && parent)
{
@@ -3389,7 +3391,7 @@ nsEditor::GetNextNode(nsIDOMNode *aCurrentNode,
if (IsEditable(*aResultNode)) return result;
else
{ // restart the search from the non-editable node we just found
nsCOMPtr<nsIDOMNode> notEditableNode = do_QueryInterface(*aResultNode);
notEditableNode = do_QueryInterface(*aResultNode);
return GetNextNode(notEditableNode, aEditableNode, aResultNode, bNoBlockCrossing);
}
}