better error handling

This commit is contained in:
jfrancis%netscape.com 1999-05-13 02:43:30 +00:00
parent d9dcd880e5
commit cc913f3c67
4 changed files with 58 additions and 30 deletions

View File

@ -562,13 +562,13 @@ nsresult nsContentIterator::Last()
nsresult nsContentIterator::Next()
{
if (mIsDone)
return NS_ERROR_FAILURE;
return NS_OK;
if (!mCurNode)
return NS_OK;
if (mCurNode == mLast)
{
mIsDone = PR_TRUE;
return NS_ERROR_FAILURE;
return NS_OK;
}
return NextNode(&mCurNode);
@ -578,13 +578,13 @@ nsresult nsContentIterator::Next()
nsresult nsContentIterator::Prev()
{
if (mIsDone)
return NS_ERROR_FAILURE;
return NS_OK;
if (!mCurNode)
return NS_OK;
if (mCurNode == mFirst)
{
mIsDone = PR_TRUE;
return NS_ERROR_FAILURE;
return NS_OK;
}
return PrevNode(&mCurNode);
@ -878,18 +878,18 @@ nsresult nsContentSubtreeIterator::Init(nsIDOMRange* aRange)
nsresult nsContentSubtreeIterator::Next()
{
if (mIsDone)
return NS_ERROR_FAILURE;
return NS_OK;
if (!mCurNode)
return NS_OK;
if (mCurNode == mLast)
{
mIsDone = PR_TRUE;
return NS_ERROR_FAILURE;
return NS_OK;
}
nsCOMPtr<nsIContent> nextNode;
if (NS_FAILED(GetNextSibling(mCurNode, &nextNode)))
return NS_ERROR_FAILURE;
return NS_OK;
nextNode = GetDeepFirstChild(nextNode);
return GetTopAncestorInRange(nextNode, &mCurNode);
}
@ -898,19 +898,19 @@ nsresult nsContentSubtreeIterator::Next()
nsresult nsContentSubtreeIterator::Prev()
{
if (mIsDone)
return NS_ERROR_FAILURE;
return NS_OK;
if (!mCurNode)
return NS_OK;
if (mCurNode == mFirst)
{
mIsDone = PR_TRUE;
return NS_ERROR_FAILURE;
return NS_OK;
}
nsCOMPtr<nsIContent> prevNode;
prevNode = GetDeepFirstChild(mCurNode);
if (NS_FAILED(PrevNode(&prevNode)))
return NS_ERROR_FAILURE;
return NS_OK;
prevNode = GetDeepLastChild(prevNode);
return GetTopAncestorInRange(prevNode, &mCurNode);
}

View File

@ -1131,7 +1131,9 @@ nsresult nsRange::DeleteContents()
nsCOMPtr<nsIContentIterator> iter;
res = NS_NewContentIterator(getter_AddRefs(iter));
iter->Init(this);
if (NS_FAILED(res)) return res;
res = iter->Init(this);
if (NS_FAILED(res)) return res;
// XXX Note that this chunk is also thread unsafe, since we
@ -1154,7 +1156,12 @@ nsresult nsRange::DeleteContents()
{
deleteList.AppendElement(NS_STATIC_CAST(void*,cN));
}
iter->Next();
res = iter->Next();
if (NS_FAILED(res)) // a little noise here to catch bugs
{
NS_NOTREACHED("nsRange::DeleteContents() : iterator failed to advance");
return res;
}
res = iter->CurrentNode(getter_AddRefs(cN));
}
@ -1474,7 +1481,8 @@ nsresult nsRange::ToString(nsString& aReturn)
// loop through the content iterator, which returns nodes in the range in
// close tag order, and grab the text from any text node
iter->CurrentNode(getter_AddRefs(cN));
nsresult res = iter->CurrentNode(getter_AddRefs(cN));
if (NS_FAILED(res)) return res;
while (NS_COMFALSE == iter->IsDone())
{
nsCOMPtr<nsIDOMText> textNode( do_QueryInterface(cN) );
@ -1498,8 +1506,14 @@ nsresult nsRange::ToString(nsString& aReturn)
aReturn += tempString;
}
}
iter->Next();
iter->CurrentNode(getter_AddRefs(cN));
res = iter->Next();
if (NS_FAILED(res)) // a little noise here to catch bugs
{
NS_NOTREACHED("nsRange::ToString() : iterator failed to advance");
return res;
}
res = iter->CurrentNode(getter_AddRefs(cN));
if (NS_FAILED(res)) return res;
}
return NS_OK;
}

View File

@ -562,13 +562,13 @@ nsresult nsContentIterator::Last()
nsresult nsContentIterator::Next()
{
if (mIsDone)
return NS_ERROR_FAILURE;
return NS_OK;
if (!mCurNode)
return NS_OK;
if (mCurNode == mLast)
{
mIsDone = PR_TRUE;
return NS_ERROR_FAILURE;
return NS_OK;
}
return NextNode(&mCurNode);
@ -578,13 +578,13 @@ nsresult nsContentIterator::Next()
nsresult nsContentIterator::Prev()
{
if (mIsDone)
return NS_ERROR_FAILURE;
return NS_OK;
if (!mCurNode)
return NS_OK;
if (mCurNode == mFirst)
{
mIsDone = PR_TRUE;
return NS_ERROR_FAILURE;
return NS_OK;
}
return PrevNode(&mCurNode);
@ -878,18 +878,18 @@ nsresult nsContentSubtreeIterator::Init(nsIDOMRange* aRange)
nsresult nsContentSubtreeIterator::Next()
{
if (mIsDone)
return NS_ERROR_FAILURE;
return NS_OK;
if (!mCurNode)
return NS_OK;
if (mCurNode == mLast)
{
mIsDone = PR_TRUE;
return NS_ERROR_FAILURE;
return NS_OK;
}
nsCOMPtr<nsIContent> nextNode;
if (NS_FAILED(GetNextSibling(mCurNode, &nextNode)))
return NS_ERROR_FAILURE;
return NS_OK;
nextNode = GetDeepFirstChild(nextNode);
return GetTopAncestorInRange(nextNode, &mCurNode);
}
@ -898,19 +898,19 @@ nsresult nsContentSubtreeIterator::Next()
nsresult nsContentSubtreeIterator::Prev()
{
if (mIsDone)
return NS_ERROR_FAILURE;
return NS_OK;
if (!mCurNode)
return NS_OK;
if (mCurNode == mFirst)
{
mIsDone = PR_TRUE;
return NS_ERROR_FAILURE;
return NS_OK;
}
nsCOMPtr<nsIContent> prevNode;
prevNode = GetDeepFirstChild(mCurNode);
if (NS_FAILED(PrevNode(&prevNode)))
return NS_ERROR_FAILURE;
return NS_OK;
prevNode = GetDeepLastChild(prevNode);
return GetTopAncestorInRange(prevNode, &mCurNode);
}

View File

@ -1131,7 +1131,9 @@ nsresult nsRange::DeleteContents()
nsCOMPtr<nsIContentIterator> iter;
res = NS_NewContentIterator(getter_AddRefs(iter));
iter->Init(this);
if (NS_FAILED(res)) return res;
res = iter->Init(this);
if (NS_FAILED(res)) return res;
// XXX Note that this chunk is also thread unsafe, since we
@ -1154,7 +1156,12 @@ nsresult nsRange::DeleteContents()
{
deleteList.AppendElement(NS_STATIC_CAST(void*,cN));
}
iter->Next();
res = iter->Next();
if (NS_FAILED(res)) // a little noise here to catch bugs
{
NS_NOTREACHED("nsRange::DeleteContents() : iterator failed to advance");
return res;
}
res = iter->CurrentNode(getter_AddRefs(cN));
}
@ -1474,7 +1481,8 @@ nsresult nsRange::ToString(nsString& aReturn)
// loop through the content iterator, which returns nodes in the range in
// close tag order, and grab the text from any text node
iter->CurrentNode(getter_AddRefs(cN));
nsresult res = iter->CurrentNode(getter_AddRefs(cN));
if (NS_FAILED(res)) return res;
while (NS_COMFALSE == iter->IsDone())
{
nsCOMPtr<nsIDOMText> textNode( do_QueryInterface(cN) );
@ -1498,8 +1506,14 @@ nsresult nsRange::ToString(nsString& aReturn)
aReturn += tempString;
}
}
iter->Next();
iter->CurrentNode(getter_AddRefs(cN));
res = iter->Next();
if (NS_FAILED(res)) // a little noise here to catch bugs
{
NS_NOTREACHED("nsRange::ToString() : iterator failed to advance");
return res;
}
res = iter->CurrentNode(getter_AddRefs(cN));
if (NS_FAILED(res)) return res;
}
return NS_OK;
}