Fix miscellaneous editor leaks. r=jfrancis@netscape.com

git-svn-id: svn://10.0.0.236/trunk@63807 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
dbaron%fas.harvard.edu
2000-03-23 01:14:49 +00:00
parent 7b03cb6e0a
commit f5d497db18
4 changed files with 58 additions and 14 deletions

View File

@@ -305,6 +305,7 @@ NS_IMETHODIMP DeleteRangeTxn::CreateTxnsToDeleteContent(nsIDOMNode *aParent,
txn->Init(mEditor, textNode, start, numToDelete);
AppendChild(txn);
NS_RELEASE(txn);
}
}
@@ -346,6 +347,7 @@ NS_IMETHODIMP DeleteRangeTxn::CreateTxnsToDeleteNodesBetween()
txn->Init(node);
AppendChild(txn);
NS_RELEASE(txn);
iter->Next();
}
return result;

View File

@@ -1722,6 +1722,7 @@ nsEditor::ForceCompositionEnd()
if(kb) {
res = kb->ResetInputState();
}
NS_RELEASE(widget);
}
}
}
@@ -3094,6 +3095,7 @@ nsEditor::GetPriorNode(nsIDOMNode *aParentNode,
{
// restart the search from the non-editable node we just found
nsCOMPtr<nsIDOMNode> notEditableNode = do_QueryInterface(*aResultNode);
NS_IF_RELEASE(*aResultNode);
return GetPriorNode(notEditableNode, aEditableNode, aResultNode);
}
}
@@ -3133,6 +3135,7 @@ nsEditor::GetNextNode(nsIDOMNode *aParentNode,
{
// restart the search from the non-editable node we just found
nsCOMPtr<nsIDOMNode> notEditableNode = do_QueryInterface(*aResultNode);
NS_IF_RELEASE(*aResultNode);
return GetNextNode(notEditableNode, aEditableNode, aResultNode);
}
}
@@ -3158,10 +3161,11 @@ nsEditor::GetPriorNode(nsIDOMNode *aCurrentNode,
*aResultNode = nsnull; // init out-param
// if aCurrentNode has a left sibling, return that sibling's rightmost child (or itself if it has no children)
result = aCurrentNode->GetPreviousSibling(aResultNode);
if ((NS_SUCCEEDED(result)) && *aResultNode)
nsCOMPtr<nsIDOMNode> prevSibling;
result = aCurrentNode->GetPreviousSibling(getter_AddRefs(prevSibling));
if ((NS_SUCCEEDED(result)) && prevSibling)
{
result = GetRightmostChild(*aResultNode, aResultNode);
result = GetRightmostChild(prevSibling, aResultNode);
if (NS_FAILED(result)) { return result; }
if (PR_FALSE==aEditableNode) {
return result;
@@ -3172,6 +3176,7 @@ nsEditor::GetPriorNode(nsIDOMNode *aCurrentNode,
else
{ // restart the search from the non-editable node we just found
nsCOMPtr<nsIDOMNode> notEditableNode = do_QueryInterface(*aResultNode);
NS_IF_RELEASE(*aResultNode);
return GetPriorNode(notEditableNode, aEditableNode, aResultNode);
}
}
@@ -3198,6 +3203,7 @@ nsEditor::GetPriorNode(nsIDOMNode *aCurrentNode,
else
{ // restart the search from the non-editable node we just found
nsCOMPtr<nsIDOMNode> notEditableNode = do_QueryInterface(*aResultNode);
NS_IF_RELEASE(*aResultNode);
return GetPriorNode(notEditableNode, aEditableNode, aResultNode);
}
}
@@ -3215,10 +3221,11 @@ nsEditor::GetNextNode(nsIDOMNode *aCurrentNode,
nsresult result;
*aResultNode = nsnull;
// if aCurrentNode has a right sibling, return that sibling's leftmost child (or itself if it has no children)
result = aCurrentNode->GetNextSibling(aResultNode);
if ((NS_SUCCEEDED(result)) && *aResultNode)
nsCOMPtr<nsIDOMNode> prevSibling;
result = aCurrentNode->GetNextSibling(getter_AddRefs(prevSibling));
if ((NS_SUCCEEDED(result)) && prevSibling)
{
result = GetLeftmostChild(*aResultNode, aResultNode);
result = GetLeftmostChild(prevSibling, aResultNode);
if (NS_FAILED(result)) { return result; }
if (PR_FALSE==aEditableNode) {
return result;
@@ -3256,6 +3263,7 @@ nsEditor::GetNextNode(nsIDOMNode *aCurrentNode,
else
{ // restart the search from the non-editable node we just found
nsCOMPtr<nsIDOMNode> notEditableNode = do_QueryInterface(*aResultNode);
NS_IF_RELEASE(*aResultNode);
return GetNextNode(notEditableNode, aEditableNode, aResultNode);
}
}
@@ -4450,7 +4458,10 @@ nsEditor::DeleteSelectionImpl(EDirection aAction)
res = CreateTxnForDeleteSelection(aAction, &txn);
if (NS_FAILED(res)) return res;
res = GetSelection(getter_AddRefs(selection));
if (NS_FAILED(res)) return res;
if (NS_FAILED(res)) {
NS_IF_RELEASE(txn);
return res;
}
nsAutoRules beginRulesSniffing(this, kOpDeleteSelection, aAction);
if (NS_SUCCEEDED(res))
@@ -4658,6 +4669,7 @@ NS_IMETHODIMP nsEditor::CreateTxnForDeleteElement(nsIDOMNode * aElement,
result = CreateTxnForDeleteSelection(eNone, &delSelTxn);
if (NS_SUCCEEDED(result) && delSelTxn) {
(*aAggTxn)->AppendChild(delSelTxn);
NS_RELEASE(delSelTxn);
}
}
}
@@ -4767,6 +4779,7 @@ nsEditor::CreateTxnForDeleteSelection(nsIEditor::EDirection aAction,
{
txn->Init(this, range);
(*aTxn)->AppendChild(txn);
NS_RELEASE(txn);
}
else
result = NS_ERROR_OUT_OF_MEMORY;
@@ -4858,6 +4871,7 @@ nsEditor::CreateTxnForDeleteInsertionPoint(nsIDOMRange *aRange,
result = CreateTxnForDeleteText(priorNodeAsText, length-1, 1, &txn);
if (NS_SUCCEEDED(result)) {
aTxn->AppendChild(txn);
NS_RELEASE(txn);
}
}
else
@@ -4872,6 +4886,7 @@ nsEditor::CreateTxnForDeleteInsertionPoint(nsIDOMRange *aRange,
result = CreateTxnForDeleteElement(priorNode, &txn);
if (NS_SUCCEEDED(result)) {
aTxn->AppendChild(txn);
NS_RELEASE(txn);
}
}
}
@@ -4895,6 +4910,7 @@ nsEditor::CreateTxnForDeleteInsertionPoint(nsIDOMRange *aRange,
result = CreateTxnForDeleteText(nextNodeAsText, 0, 1, &txn);
if (NS_SUCCEEDED(result)) {
aTxn->AppendChild(txn);
NS_RELEASE(txn);
}
}
else
@@ -4909,6 +4925,7 @@ nsEditor::CreateTxnForDeleteInsertionPoint(nsIDOMRange *aRange,
result = CreateTxnForDeleteElement(nextNode, &txn);
if (NS_SUCCEEDED(result)) {
aTxn->AppendChild(txn);
NS_RELEASE(txn);
}
}
}
@@ -4924,6 +4941,7 @@ nsEditor::CreateTxnForDeleteInsertionPoint(nsIDOMRange *aRange,
result = CreateTxnForDeleteText(nodeAsText, offset, 1, &txn);
if (NS_SUCCEEDED(result)) {
aTxn->AppendChild(txn);
NS_RELEASE(txn);
}
}
else
@@ -4957,6 +4975,7 @@ nsEditor::CreateTxnForDeleteInsertionPoint(nsIDOMRange *aRange,
if (NS_FAILED(result)) { return result; }
if (!delTextTxn) { return NS_ERROR_NULL_POINTER; }
aTxn->AppendChild(delTextTxn);
NS_RELEASE(delTextTxn);
}
else
{
@@ -4965,6 +4984,7 @@ nsEditor::CreateTxnForDeleteInsertionPoint(nsIDOMRange *aRange,
if (NS_FAILED(result)) { return result; }
if (!delElementTxn) { return NS_ERROR_NULL_POINTER; }
aTxn->AppendChild(delElementTxn);
NS_RELEASE(delElementTxn);
}
}
}

View File

@@ -305,6 +305,7 @@ NS_IMETHODIMP DeleteRangeTxn::CreateTxnsToDeleteContent(nsIDOMNode *aParent,
txn->Init(mEditor, textNode, start, numToDelete);
AppendChild(txn);
NS_RELEASE(txn);
}
}
@@ -346,6 +347,7 @@ NS_IMETHODIMP DeleteRangeTxn::CreateTxnsToDeleteNodesBetween()
txn->Init(node);
AppendChild(txn);
NS_RELEASE(txn);
iter->Next();
}
return result;

View File

@@ -1722,6 +1722,7 @@ nsEditor::ForceCompositionEnd()
if(kb) {
res = kb->ResetInputState();
}
NS_RELEASE(widget);
}
}
}
@@ -3094,6 +3095,7 @@ nsEditor::GetPriorNode(nsIDOMNode *aParentNode,
{
// restart the search from the non-editable node we just found
nsCOMPtr<nsIDOMNode> notEditableNode = do_QueryInterface(*aResultNode);
NS_IF_RELEASE(*aResultNode);
return GetPriorNode(notEditableNode, aEditableNode, aResultNode);
}
}
@@ -3133,6 +3135,7 @@ nsEditor::GetNextNode(nsIDOMNode *aParentNode,
{
// restart the search from the non-editable node we just found
nsCOMPtr<nsIDOMNode> notEditableNode = do_QueryInterface(*aResultNode);
NS_IF_RELEASE(*aResultNode);
return GetNextNode(notEditableNode, aEditableNode, aResultNode);
}
}
@@ -3158,10 +3161,11 @@ nsEditor::GetPriorNode(nsIDOMNode *aCurrentNode,
*aResultNode = nsnull; // init out-param
// if aCurrentNode has a left sibling, return that sibling's rightmost child (or itself if it has no children)
result = aCurrentNode->GetPreviousSibling(aResultNode);
if ((NS_SUCCEEDED(result)) && *aResultNode)
nsCOMPtr<nsIDOMNode> prevSibling;
result = aCurrentNode->GetPreviousSibling(getter_AddRefs(prevSibling));
if ((NS_SUCCEEDED(result)) && prevSibling)
{
result = GetRightmostChild(*aResultNode, aResultNode);
result = GetRightmostChild(prevSibling, aResultNode);
if (NS_FAILED(result)) { return result; }
if (PR_FALSE==aEditableNode) {
return result;
@@ -3172,6 +3176,7 @@ nsEditor::GetPriorNode(nsIDOMNode *aCurrentNode,
else
{ // restart the search from the non-editable node we just found
nsCOMPtr<nsIDOMNode> notEditableNode = do_QueryInterface(*aResultNode);
NS_IF_RELEASE(*aResultNode);
return GetPriorNode(notEditableNode, aEditableNode, aResultNode);
}
}
@@ -3198,6 +3203,7 @@ nsEditor::GetPriorNode(nsIDOMNode *aCurrentNode,
else
{ // restart the search from the non-editable node we just found
nsCOMPtr<nsIDOMNode> notEditableNode = do_QueryInterface(*aResultNode);
NS_IF_RELEASE(*aResultNode);
return GetPriorNode(notEditableNode, aEditableNode, aResultNode);
}
}
@@ -3215,10 +3221,11 @@ nsEditor::GetNextNode(nsIDOMNode *aCurrentNode,
nsresult result;
*aResultNode = nsnull;
// if aCurrentNode has a right sibling, return that sibling's leftmost child (or itself if it has no children)
result = aCurrentNode->GetNextSibling(aResultNode);
if ((NS_SUCCEEDED(result)) && *aResultNode)
nsCOMPtr<nsIDOMNode> prevSibling;
result = aCurrentNode->GetNextSibling(getter_AddRefs(prevSibling));
if ((NS_SUCCEEDED(result)) && prevSibling)
{
result = GetLeftmostChild(*aResultNode, aResultNode);
result = GetLeftmostChild(prevSibling, aResultNode);
if (NS_FAILED(result)) { return result; }
if (PR_FALSE==aEditableNode) {
return result;
@@ -3256,6 +3263,7 @@ nsEditor::GetNextNode(nsIDOMNode *aCurrentNode,
else
{ // restart the search from the non-editable node we just found
nsCOMPtr<nsIDOMNode> notEditableNode = do_QueryInterface(*aResultNode);
NS_IF_RELEASE(*aResultNode);
return GetNextNode(notEditableNode, aEditableNode, aResultNode);
}
}
@@ -4450,7 +4458,10 @@ nsEditor::DeleteSelectionImpl(EDirection aAction)
res = CreateTxnForDeleteSelection(aAction, &txn);
if (NS_FAILED(res)) return res;
res = GetSelection(getter_AddRefs(selection));
if (NS_FAILED(res)) return res;
if (NS_FAILED(res)) {
NS_IF_RELEASE(txn);
return res;
}
nsAutoRules beginRulesSniffing(this, kOpDeleteSelection, aAction);
if (NS_SUCCEEDED(res))
@@ -4658,6 +4669,7 @@ NS_IMETHODIMP nsEditor::CreateTxnForDeleteElement(nsIDOMNode * aElement,
result = CreateTxnForDeleteSelection(eNone, &delSelTxn);
if (NS_SUCCEEDED(result) && delSelTxn) {
(*aAggTxn)->AppendChild(delSelTxn);
NS_RELEASE(delSelTxn);
}
}
}
@@ -4767,6 +4779,7 @@ nsEditor::CreateTxnForDeleteSelection(nsIEditor::EDirection aAction,
{
txn->Init(this, range);
(*aTxn)->AppendChild(txn);
NS_RELEASE(txn);
}
else
result = NS_ERROR_OUT_OF_MEMORY;
@@ -4858,6 +4871,7 @@ nsEditor::CreateTxnForDeleteInsertionPoint(nsIDOMRange *aRange,
result = CreateTxnForDeleteText(priorNodeAsText, length-1, 1, &txn);
if (NS_SUCCEEDED(result)) {
aTxn->AppendChild(txn);
NS_RELEASE(txn);
}
}
else
@@ -4872,6 +4886,7 @@ nsEditor::CreateTxnForDeleteInsertionPoint(nsIDOMRange *aRange,
result = CreateTxnForDeleteElement(priorNode, &txn);
if (NS_SUCCEEDED(result)) {
aTxn->AppendChild(txn);
NS_RELEASE(txn);
}
}
}
@@ -4895,6 +4910,7 @@ nsEditor::CreateTxnForDeleteInsertionPoint(nsIDOMRange *aRange,
result = CreateTxnForDeleteText(nextNodeAsText, 0, 1, &txn);
if (NS_SUCCEEDED(result)) {
aTxn->AppendChild(txn);
NS_RELEASE(txn);
}
}
else
@@ -4909,6 +4925,7 @@ nsEditor::CreateTxnForDeleteInsertionPoint(nsIDOMRange *aRange,
result = CreateTxnForDeleteElement(nextNode, &txn);
if (NS_SUCCEEDED(result)) {
aTxn->AppendChild(txn);
NS_RELEASE(txn);
}
}
}
@@ -4924,6 +4941,7 @@ nsEditor::CreateTxnForDeleteInsertionPoint(nsIDOMRange *aRange,
result = CreateTxnForDeleteText(nodeAsText, offset, 1, &txn);
if (NS_SUCCEEDED(result)) {
aTxn->AppendChild(txn);
NS_RELEASE(txn);
}
}
else
@@ -4957,6 +4975,7 @@ nsEditor::CreateTxnForDeleteInsertionPoint(nsIDOMRange *aRange,
if (NS_FAILED(result)) { return result; }
if (!delTextTxn) { return NS_ERROR_NULL_POINTER; }
aTxn->AppendChild(delTextTxn);
NS_RELEASE(delTextTxn);
}
else
{
@@ -4965,6 +4984,7 @@ nsEditor::CreateTxnForDeleteInsertionPoint(nsIDOMRange *aRange,
if (NS_FAILED(result)) { return result; }
if (!delElementTxn) { return NS_ERROR_NULL_POINTER; }
aTxn->AppendChild(delElementTxn);
NS_RELEASE(delElementTxn);
}
}
}