Followup for bug 314920, patch by Alfred Kayser <alfredkayser@nl.ibm.com>, r+sr=bzbarsky

This commit is contained in:
bzbarsky%mit.edu 2005-11-11 18:38:54 +00:00
Родитель ccba74b784
Коммит 55d1b061bd
1 изменённых файлов: 16 добавлений и 13 удалений

Просмотреть файл

@ -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;