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

Bug #96911 r=jfrancis sr=kin a=blizzard
This commit is contained in:
cls%seawood.org 2001-09-01 17:24:08 +00:00
parent 9069576736
commit b52b439829
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);
}
}

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);
}
}