diff --git a/mozilla/content/html/document/src/nsHTMLContentSink.cpp b/mozilla/content/html/document/src/nsHTMLContentSink.cpp
index 1df5517d919..475f82e0c86 100644
--- a/mozilla/content/html/document/src/nsHTMLContentSink.cpp
+++ b/mozilla/content/html/document/src/nsHTMLContentSink.cpp
@@ -548,7 +548,7 @@ void HTMLContentSink::ReduceEntities(nsString& aString) {
theStartPos=theSemiPos+1;
- PRUnichar theChar=aString.CharAt(theAmpPos+1);
+ PRUnichar theChar=(theLen>theAmpPos+1) ? aString.CharAt(theAmpPos+1) : '\0';
PRUnichar theEntity=0;
PRInt32 theErr=0;
PRInt32 theNCRValue=0;
@@ -3059,7 +3059,7 @@ HTMLContentSink::AddDocTypeDecl(const nsIParserNode& aNode, PRInt32 aMode)
publicId.Trim(" \t\n\r");
// Strip quotes
- PRUnichar ch = publicId.First();
+ PRUnichar ch = publicId.Length() ? publicId.First() : '\0';
if (ch == '"' || ch == '\'') {
publicId.Cut(0, 1);
@@ -3120,7 +3120,7 @@ HTMLContentSink::AddDocTypeDecl(const nsIParserNode& aNode, PRInt32 aMode)
systemId.Trim(" \t\n\r");
// Strip quotes
- PRUnichar ch = systemId.First();
+ PRUnichar ch = systemId.Length() ? systemId.First() : '\0';
if (ch == '"' || ch == '\'') {
systemId.Cut(0, 1);
@@ -3168,7 +3168,7 @@ HTMLContentSink::AddDocTypeDecl(const nsIParserNode& aNode, PRInt32 aMode)
*/
PRInt32 nameEnd = 0;
- if (name.First() != '"' && name.First() != '\'') {
+ if (name.Length() && name.First() != '"' && name.First() != '\'') {
nameEnd = name.FindCharInSet(" \n\r\t");
}
@@ -3180,7 +3180,7 @@ HTMLContentSink::AddDocTypeDecl(const nsIParserNode& aNode, PRInt32 aMode)
name.Mid(publicId, nameEnd, name.Length() - nameEnd);
publicId.Trim(" \t\n\r");
- PRUnichar ch = publicId.First();
+ PRUnichar ch = publicId.Length() ? publicId.First() : '\0';
if (ch == '"' || ch == '\'') {
publicId.Cut(0, 1);
diff --git a/mozilla/htmlparser/src/nsViewSourceHTML.cpp b/mozilla/htmlparser/src/nsViewSourceHTML.cpp
index 3260646a401..b9623e88301 100644
--- a/mozilla/htmlparser/src/nsViewSourceHTML.cpp
+++ b/mozilla/htmlparser/src/nsViewSourceHTML.cpp
@@ -665,11 +665,11 @@ nsresult WriteText(const nsString& aTextString,nsIContentSink& aSink,PRBool aPre
PRUnichar theNextChar=0;
while(++theOffsettheAmpPos+1) ? aString.CharAt(theAmpPos+1) : '\0';
PRUnichar theEntity=0;
PRInt32 theErr=0;
PRInt32 theNCRValue=0;
@@ -3059,7 +3059,7 @@ HTMLContentSink::AddDocTypeDecl(const nsIParserNode& aNode, PRInt32 aMode)
publicId.Trim(" \t\n\r");
// Strip quotes
- PRUnichar ch = publicId.First();
+ PRUnichar ch = publicId.Length() ? publicId.First() : '\0';
if (ch == '"' || ch == '\'') {
publicId.Cut(0, 1);
@@ -3120,7 +3120,7 @@ HTMLContentSink::AddDocTypeDecl(const nsIParserNode& aNode, PRInt32 aMode)
systemId.Trim(" \t\n\r");
// Strip quotes
- PRUnichar ch = systemId.First();
+ PRUnichar ch = systemId.Length() ? systemId.First() : '\0';
if (ch == '"' || ch == '\'') {
systemId.Cut(0, 1);
@@ -3168,7 +3168,7 @@ HTMLContentSink::AddDocTypeDecl(const nsIParserNode& aNode, PRInt32 aMode)
*/
PRInt32 nameEnd = 0;
- if (name.First() != '"' && name.First() != '\'') {
+ if (name.Length() && name.First() != '"' && name.First() != '\'') {
nameEnd = name.FindCharInSet(" \n\r\t");
}
@@ -3180,7 +3180,7 @@ HTMLContentSink::AddDocTypeDecl(const nsIParserNode& aNode, PRInt32 aMode)
name.Mid(publicId, nameEnd, name.Length() - nameEnd);
publicId.Trim(" \t\n\r");
- PRUnichar ch = publicId.First();
+ PRUnichar ch = publicId.Length() ? publicId.First() : '\0';
if (ch == '"' || ch == '\'') {
publicId.Cut(0, 1);
diff --git a/mozilla/parser/htmlparser/src/nsViewSourceHTML.cpp b/mozilla/parser/htmlparser/src/nsViewSourceHTML.cpp
index 3260646a401..b9623e88301 100644
--- a/mozilla/parser/htmlparser/src/nsViewSourceHTML.cpp
+++ b/mozilla/parser/htmlparser/src/nsViewSourceHTML.cpp
@@ -665,11 +665,11 @@ nsresult WriteText(const nsString& aTextString,nsIContentSink& aSink,PRBool aPre
PRUnichar theNextChar=0;
while(++theOffset