diff --git a/mozilla/parser/htmlparser/src/nsScanner.cpp b/mozilla/parser/htmlparser/src/nsScanner.cpp index cf515ac2606..39958e38916 100644 --- a/mozilla/parser/htmlparser/src/nsScanner.cpp +++ b/mozilla/parser/htmlparser/src/nsScanner.cpp @@ -266,8 +266,10 @@ nsScanner::~nsScanner() { * @return */ void nsScanner::RewindToMark(void){ - mCountRemaining += (Distance(mMarkPosition, mCurrentPosition)); - mCurrentPosition = mMarkPosition; + if (mSlidingBuffer) { + mCountRemaining += (Distance(mMarkPosition, mCurrentPosition)); + mCurrentPosition = mMarkPosition; + } } @@ -297,6 +299,9 @@ void nsScanner::Mark() { * @return error code */ PRBool nsScanner::UngetReadable(const nsAString& aBuffer) { + if (!mSlidingBuffer) { + return PR_FALSE; + } mSlidingBuffer->UngetReadable(aBuffer,mCurrentPosition); mSlidingBuffer->BeginReading(mCurrentPosition); // Insertion invalidated our iterators @@ -316,7 +321,6 @@ PRBool nsScanner::UngetReadable(const nsAString& aBuffer) { * @return error code */ nsresult nsScanner::Append(const nsAString& aBuffer) { - mTotalRead += aBuffer.Length(); AppendToBuffer(aBuffer); return NS_OK; @@ -1335,6 +1339,11 @@ void nsScanner::AppendASCIItoBuffer(const char* aData, PRUint32 aLen) * @return nada */ void nsScanner::CopyUnusedData(nsString& aCopyBuffer) { + if (!mSlidingBuffer) { + aCopyBuffer.Truncate(); + return; + } + nsScannerIterator start, end; start = mCurrentPosition; end = mEndPosition;