Skip to content

Commit

Permalink
Bug 1749935 - Make mSlidingBuffer a UniquePtr. r=hsivonen
Browse files Browse the repository at this point in the history
  • Loading branch information
petervanderbeken committed Feb 14, 2022
1 parent bc2444e commit 6a184b6
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 25 deletions.
30 changes: 7 additions & 23 deletions parser/htmlparser/nsScanner.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -51,15 +51,8 @@ nsScanner::nsScanner(const nsAString& anHTMLString, bool aIncremental)
: mIncremental(aIncremental) {
MOZ_COUNT_CTOR(nsScanner);

mSlidingBuffer = nullptr;
if (AppendToBuffer(anHTMLString)) {
mSlidingBuffer->BeginReading(mCurrentPosition);
} else {
/* XXX see hack below, re: bug 182067 */
memset(&mCurrentPosition, 0, sizeof(mCurrentPosition));
mEndPosition = mCurrentPosition;
}
mMarkPosition = mCurrentPosition;
AppendToBuffer(anHTMLString);
MOZ_ASSERT(mMarkPosition == mCurrentPosition);
}

/**
Expand All @@ -69,7 +62,6 @@ nsScanner::nsScanner(const nsAString& anHTMLString, bool aIncremental)
*/
nsScanner::nsScanner(nsIURI* aURI) : mURI(aURI), mIncremental(true) {
MOZ_COUNT_CTOR(nsScanner);
mSlidingBuffer = nullptr;

// XXX This is a big hack. We need to initialize the iterators to something.
// What matters is that mCurrentPosition == mEndPosition, so that our methods
Expand Down Expand Up @@ -112,11 +104,7 @@ nsresult nsScanner::SetDocumentCharset(NotNull<const Encoding*> aEncoding,
* @param
* @return
*/
nsScanner::~nsScanner() {
delete mSlidingBuffer;

MOZ_COUNT_DTOR(nsScanner);
}
nsScanner::~nsScanner() { MOZ_COUNT_DTOR(nsScanner); }

/**
* Resets current offset position of input stream to marked position.
Expand Down Expand Up @@ -238,7 +226,7 @@ nsresult nsScanner::Append(const char* aBuffer, uint32_t aLen) {
// since it doesn't reflect on our success or failure
// - Ref. bug 87110
res = NS_OK;
if (!AppendToBuffer(buffer)) res = NS_ERROR_OUT_OF_MEMORY;
AppendToBuffer(buffer);
} else {
NS_WARNING("No decoder found.");
res = NS_ERROR_FAILURE;
Expand Down Expand Up @@ -289,22 +277,18 @@ void nsScanner::SetPosition(nsScannerIterator& aPosition, bool aTerminate) {
}
}

bool nsScanner::AppendToBuffer(nsScannerString::Buffer* aBuf) {
void nsScanner::AppendToBuffer(nsScannerString::Buffer* aBuf) {
if (!mSlidingBuffer) {
mSlidingBuffer = new nsScannerString(aBuf);
if (!mSlidingBuffer) return false;
mSlidingBuffer = MakeUnique<nsScannerString>(aBuf);
mSlidingBuffer->BeginReading(mCurrentPosition);
mMarkPosition = mCurrentPosition;
mSlidingBuffer->EndReading(mEndPosition);
} else {
mSlidingBuffer->AppendBuffer(aBuf);
if (mCurrentPosition == mEndPosition) {
mSlidingBuffer->BeginReading(mCurrentPosition);
}
mSlidingBuffer->EndReading(mEndPosition);
}

return true;
mSlidingBuffer->EndReading(mEndPosition);
}

/**
Expand Down
4 changes: 2 additions & 2 deletions parser/htmlparser/nsScanner.h
Original file line number Diff line number Diff line change
Expand Up @@ -161,15 +161,15 @@ class nsScanner final {
void SetIncremental(bool anIncrValue) { mIncremental = anIncrValue; }

protected:
bool AppendToBuffer(nsScannerString::Buffer* aBuffer);
void AppendToBuffer(nsScannerString::Buffer* aBuffer);
bool AppendToBuffer(const nsAString& aStr) {
nsScannerString::Buffer* buf = nsScannerString::AllocBufferFromString(aStr);
if (!buf) return false;
AppendToBuffer(buf);
return true;
}

nsScannerString* mSlidingBuffer;
mozilla::UniquePtr<nsScannerString> mSlidingBuffer;
nsScannerIterator mCurrentPosition; // The position we will next read from in
// the scanner buffer
nsScannerIterator
Expand Down

0 comments on commit 6a184b6

Please sign in to comment.