зеркало из https://github.com/mozilla/gecko-dev.git
Followup for bug 314920, patch by Alfred Kayser <alfredkayser@nl.ibm.com>, r+sr=bzbarsky
This commit is contained in:
Родитель
ccba74b784
Коммит
55d1b061bd
|
@ -174,7 +174,7 @@ protected:
|
|||
nsresult InitScanner(nsIUnicharInputStream* aInput, nsIURI* aSheetURI,
|
||||
PRUint32 aLineNumber, nsIURI* aBaseURI);
|
||||
// the caller must hold on to aBuffer until parsing is done
|
||||
nsresult InitScanner(const nsAString& aBuffer, nsIURI* aSheetURI,
|
||||
nsresult InitScanner(const nsString& aString, nsIURI* aSheetURI,
|
||||
PRUint32 aLineNumber, nsIURI* aBaseURI);
|
||||
nsresult ReleaseScanner(void);
|
||||
|
||||
|
@ -618,15 +618,14 @@ CSSParserImpl::InitScanner(nsIUnicharInputStream* aInput, nsIURI* aSheetURI,
|
|||
}
|
||||
|
||||
nsresult
|
||||
CSSParserImpl::InitScanner(const nsAString& aBuffer, nsIURI* aSheetURI,
|
||||
CSSParserImpl::InitScanner(const nsString& aString, nsIURI* aSheetURI,
|
||||
PRUint32 aLineNumber, nsIURI* aBaseURI)
|
||||
{
|
||||
// Having it not own the string is OK since the caller will hold on to
|
||||
// the stream until we're done parsing.
|
||||
NS_ASSERTION(! mScannerInited, "already have scanner");
|
||||
|
||||
const nsAFlatString& flat = PromiseFlatString(aBuffer);
|
||||
mScanner.Init(nsnull, flat.get(), flat.Length(), aSheetURI, aLineNumber);
|
||||
mScanner.Init(nsnull, aString.get(), aString.Length(), aSheetURI, aLineNumber);
|
||||
|
||||
#ifdef DEBUG
|
||||
mScannerInited = PR_TRUE;
|
||||
|
@ -748,8 +747,8 @@ CSSParserImpl::ParseStyleAttribute(const nsAString& aAttributeValue,
|
|||
{
|
||||
NS_ASSERTION(nsnull != aBaseURL, "need base URL");
|
||||
|
||||
nsresult rv =
|
||||
InitScanner(aAttributeValue, aDocURL, 0, aBaseURL); // XXX line number
|
||||
const nsAFlatString& flat = PromiseFlatString(aAttributeValue);
|
||||
nsresult rv = InitScanner(flat, aDocURL, 0, aBaseURL); // XXX line number
|
||||
if (! NS_SUCCEEDED(rv)) {
|
||||
return rv;
|
||||
}
|
||||
|
@ -803,7 +802,8 @@ CSSParserImpl::ParseAndAppendDeclaration(const nsAString& aBuffer,
|
|||
// NS_ASSERTION(nsnull != aBaseURL, "need base URL");
|
||||
*aChanged = PR_FALSE;
|
||||
|
||||
nsresult rv = InitScanner(aBuffer, aSheetURL, 0, aBaseURL);
|
||||
const nsAFlatString& flat = PromiseFlatString(aBuffer);
|
||||
nsresult rv = InitScanner(flat, aSheetURL, 0, aBaseURL);
|
||||
if (! NS_SUCCEEDED(rv)) {
|
||||
return rv;
|
||||
}
|
||||
|
@ -852,7 +852,8 @@ CSSParserImpl::ParseRule(const nsAString& aRule,
|
|||
{
|
||||
NS_ASSERTION(nsnull != aBaseURL, "need base URL");
|
||||
|
||||
nsresult rv = InitScanner(aRule, aSheetURL, 0, aBaseURL);
|
||||
const nsAFlatString& flat = PromiseFlatString(aRule);
|
||||
nsresult rv = InitScanner(flat, aSheetURL, 0, aBaseURL);
|
||||
if (NS_FAILED(rv)) {
|
||||
return rv;
|
||||
}
|
||||
|
@ -893,7 +894,8 @@ CSSParserImpl::ParseProperty(const nsCSSProperty aPropID,
|
|||
NS_ASSERTION(nsnull != aDeclaration, "Need declaration to parse into!");
|
||||
*aChanged = PR_FALSE;
|
||||
|
||||
nsresult rv = InitScanner(aPropValue, aSheetURL, 0, aBaseURL);
|
||||
const nsAFlatString& flat = PromiseFlatString(aPropValue);
|
||||
nsresult rv = InitScanner(flat, aSheetURL, 0, aBaseURL);
|
||||
if (NS_FAILED(rv)) {
|
||||
return rv;
|
||||
}
|
||||
|
@ -998,8 +1000,10 @@ CSSParserImpl::DoParseMediaList(const nsSubstring& aBuffer,
|
|||
PRUint32 aLineNumber, // for error reporting
|
||||
nsMediaList* aMediaList)
|
||||
{
|
||||
const nsAFlatString& flat = PromiseFlatString(aBuffer);
|
||||
|
||||
// fake base URL since media lists don't have URLs in them
|
||||
nsresult rv = InitScanner(aBuffer, aURL, aLineNumber, aURL);
|
||||
nsresult rv = InitScanner(flat, aURL, aLineNumber, aURL);
|
||||
if (NS_FAILED(rv)) {
|
||||
return rv;
|
||||
}
|
||||
|
@ -1021,9 +1025,8 @@ CSSParserImpl::ParseColorString(const nsSubstring& aBuffer,
|
|||
{
|
||||
NS_ASSERTION(aHandleAlphaColors == PR_TRUE || aHandleAlphaColors == PR_FALSE, "bad PRBool value");
|
||||
|
||||
nsresult rv = NS_ERROR_FAILURE;
|
||||
|
||||
rv = InitScanner(aBuffer, aURL, aLineNumber, aURL);
|
||||
const nsAFlatString& flat = PromiseFlatString(aBuffer);
|
||||
nsresult rv = InitScanner(flat, aURL, aLineNumber, aURL);
|
||||
if (NS_FAILED(rv))
|
||||
return rv;
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче