diff --git a/mozilla/htmlparser/src/nsHTMLTokens.cpp b/mozilla/htmlparser/src/nsHTMLTokens.cpp
index a2c6331e3af..c7763a67d95 100644
--- a/mozilla/htmlparser/src/nsHTMLTokens.cpp
+++ b/mozilla/htmlparser/src/nsHTMLTokens.cpp
@@ -1546,18 +1546,22 @@ nsresult ConsumeAttributeValueText(nsString& aString,
const nsReadEndCondition& aEndCondition,
PRInt32 aFlag)
{
- nsresult result=aScanner.ReadUntil(aString,aEndCondition,PR_FALSE);
-
- if(NS_SUCCEEDED(result)) {
- PRUnichar ch;
- aScanner.Peek(ch);
- if(ch==kAmpersand) {
- result=ConsumeAttributeEntity(aString,aScanner,aFlag);
- if (NS_SUCCEEDED(result)) {
- result=ConsumeAttributeValueText(aString,aScanner,aEndCondition,aFlag);
+ nsresult result = NS_OK;
+ PRBool done = PR_FALSE;
+
+ do {
+ result = aScanner.ReadUntil(aString,aEndCondition,PR_FALSE);
+ if(NS_SUCCEEDED(result)) {
+ PRUnichar ch;
+ aScanner.Peek(ch);
+ if(ch == kAmpersand) {
+ result = ConsumeAttributeEntity(aString,aScanner,aFlag);
+ }
+ else {
+ done = PR_TRUE;
}
}
- }
+ } while (NS_SUCCEEDED(result) && !done);
return result;
}
@@ -1934,7 +1938,10 @@ CEntityToken::ConsumeEntity(PRUnichar aChar,
do {
result=aScanner.GetChar(aChar);
- NS_ENSURE_SUCCESS(result,result);
+
+ if (NS_FAILED(result)) {
+ return result;
+ }
aString.Append(aChar);
if(aChar==kRightBrace)
@@ -1947,7 +1954,10 @@ CEntityToken::ConsumeEntity(PRUnichar aChar,
PRUnichar theChar=0;
if (kHashsign==aChar) {
result = aScanner.Peek(theChar,2);
- NS_ENSURE_SUCCESS(result,result);
+
+ if (NS_FAILED(result)) {
+ return result;
+ }
if (nsCRT::IsAsciiDigit(theChar)) {
aScanner.GetChar(aChar); // Consume &
@@ -1969,7 +1979,10 @@ CEntityToken::ConsumeEntity(PRUnichar aChar,
}
else {
result = aScanner.Peek(theChar,1);
- NS_ENSURE_SUCCESS(result,result);
+
+ if (NS_FAILED(result)) {
+ return result;
+ }
if(nsCRT::IsAsciiAlpha(theChar) ||
theChar == '_' ||
@@ -1983,10 +1996,15 @@ CEntityToken::ConsumeEntity(PRUnichar aChar,
}
}
- NS_ENSURE_SUCCESS(result,result);
+ if (NS_FAILED(result)) {
+ return result;
+ }
result=aScanner.Peek(aChar);
- NS_ENSURE_SUCCESS(result,result);
+
+ if (NS_FAILED(result)) {
+ return result;
+ }
if (aChar == kSemicolon) {
// consume semicolon that stopped the scan
diff --git a/mozilla/parser/htmlparser/src/nsHTMLTokens.cpp b/mozilla/parser/htmlparser/src/nsHTMLTokens.cpp
index a2c6331e3af..c7763a67d95 100644
--- a/mozilla/parser/htmlparser/src/nsHTMLTokens.cpp
+++ b/mozilla/parser/htmlparser/src/nsHTMLTokens.cpp
@@ -1546,18 +1546,22 @@ nsresult ConsumeAttributeValueText(nsString& aString,
const nsReadEndCondition& aEndCondition,
PRInt32 aFlag)
{
- nsresult result=aScanner.ReadUntil(aString,aEndCondition,PR_FALSE);
-
- if(NS_SUCCEEDED(result)) {
- PRUnichar ch;
- aScanner.Peek(ch);
- if(ch==kAmpersand) {
- result=ConsumeAttributeEntity(aString,aScanner,aFlag);
- if (NS_SUCCEEDED(result)) {
- result=ConsumeAttributeValueText(aString,aScanner,aEndCondition,aFlag);
+ nsresult result = NS_OK;
+ PRBool done = PR_FALSE;
+
+ do {
+ result = aScanner.ReadUntil(aString,aEndCondition,PR_FALSE);
+ if(NS_SUCCEEDED(result)) {
+ PRUnichar ch;
+ aScanner.Peek(ch);
+ if(ch == kAmpersand) {
+ result = ConsumeAttributeEntity(aString,aScanner,aFlag);
+ }
+ else {
+ done = PR_TRUE;
}
}
- }
+ } while (NS_SUCCEEDED(result) && !done);
return result;
}
@@ -1934,7 +1938,10 @@ CEntityToken::ConsumeEntity(PRUnichar aChar,
do {
result=aScanner.GetChar(aChar);
- NS_ENSURE_SUCCESS(result,result);
+
+ if (NS_FAILED(result)) {
+ return result;
+ }
aString.Append(aChar);
if(aChar==kRightBrace)
@@ -1947,7 +1954,10 @@ CEntityToken::ConsumeEntity(PRUnichar aChar,
PRUnichar theChar=0;
if (kHashsign==aChar) {
result = aScanner.Peek(theChar,2);
- NS_ENSURE_SUCCESS(result,result);
+
+ if (NS_FAILED(result)) {
+ return result;
+ }
if (nsCRT::IsAsciiDigit(theChar)) {
aScanner.GetChar(aChar); // Consume &
@@ -1969,7 +1979,10 @@ CEntityToken::ConsumeEntity(PRUnichar aChar,
}
else {
result = aScanner.Peek(theChar,1);
- NS_ENSURE_SUCCESS(result,result);
+
+ if (NS_FAILED(result)) {
+ return result;
+ }
if(nsCRT::IsAsciiAlpha(theChar) ||
theChar == '_' ||
@@ -1983,10 +1996,15 @@ CEntityToken::ConsumeEntity(PRUnichar aChar,
}
}
- NS_ENSURE_SUCCESS(result,result);
+ if (NS_FAILED(result)) {
+ return result;
+ }
result=aScanner.Peek(aChar);
- NS_ENSURE_SUCCESS(result,result);
+
+ if (NS_FAILED(result)) {
+ return result;
+ }
if (aChar == kSemicolon) {
// consume semicolon that stopped the scan