Bug 721730. When we have a null aKey, don't do a linear search down to mLastBuffer. r=hsivonen
This commit is contained in:
@@ -384,22 +384,14 @@ nsHtml5Parser::Parse(const nsAString& aSourceBuffer,
|
|||||||
// prevSearchBuf is the previous buffer before the keyholder or null if
|
// prevSearchBuf is the previous buffer before the keyholder or null if
|
||||||
// there isn't one.
|
// there isn't one.
|
||||||
} else {
|
} else {
|
||||||
// We have a first-level write in the document.open() case. We insert
|
// We have a first-level write in the document.open() case. We insert before
|
||||||
// before mLastBuffer. We need to put a marker there, because otherwise
|
// mLastBuffer, effectively, by making mLastBuffer be a new sentinel object
|
||||||
// additional document.writes from nested event loops would insert in the
|
// and redesignating the previous mLastBuffer as our firstLevelMarker. We
|
||||||
// wrong place. Sigh.
|
// need to put a marker there, because otherwise additional document.writes
|
||||||
firstLevelMarker = new nsHtml5OwningUTF16Buffer((void*)nsnull);
|
// from nested event loops would insert in the wrong place. Sigh.
|
||||||
if (mFirstBuffer == mLastBuffer) {
|
mLastBuffer->next = new nsHtml5OwningUTF16Buffer((void*)nsnull);
|
||||||
firstLevelMarker->next = mLastBuffer;
|
firstLevelMarker = mLastBuffer;
|
||||||
mFirstBuffer = firstLevelMarker;
|
mLastBuffer = mLastBuffer->next;
|
||||||
} else {
|
|
||||||
prevSearchBuf = mFirstBuffer;
|
|
||||||
while (prevSearchBuf->next != mLastBuffer) {
|
|
||||||
prevSearchBuf = prevSearchBuf->next;
|
|
||||||
}
|
|
||||||
firstLevelMarker->next = mLastBuffer;
|
|
||||||
prevSearchBuf->next = firstLevelMarker;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
nsHtml5DependentUTF16Buffer stackBuffer(aSourceBuffer);
|
nsHtml5DependentUTF16Buffer stackBuffer(aSourceBuffer);
|
||||||
|
|||||||
Reference in New Issue
Block a user