From 44ebbe32f8c68a9eebf1e71c0c7c7db0cf36c194 Mon Sep 17 00:00:00 2001 From: "rickg%netscape.com" Date: Mon, 15 May 2000 20:37:01 +0000 Subject: [PATCH] fixed edge case in entity reduction code git-svn-id: svn://10.0.0.236/trunk@69847 18797224-902f-48f8-a5cc-f745e15eee43 --- .../content/html/document/src/nsHTMLContentSink.cpp | 12 ++++++++++-- .../layout/html/document/src/nsHTMLContentSink.cpp | 12 ++++++++++-- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/mozilla/content/html/document/src/nsHTMLContentSink.cpp b/mozilla/content/html/document/src/nsHTMLContentSink.cpp index bea53df7247..6144372069d 100644 --- a/mozilla/content/html/document/src/nsHTMLContentSink.cpp +++ b/mozilla/content/html/document/src/nsHTMLContentSink.cpp @@ -676,10 +676,18 @@ void HTMLContentSink::ReduceEntities(nsString& aString) { dtd->ConvertEntityToUnicode(theNCRStr, &theNCRValue); theEntity=PRUnichar(theNCRValue); } + else { + //what looked like an entity is not really one. + //so let's copy the ncrstring back to the output string + aString.Mid(theNCRStr,theAmpPos,theSemiPos-theAmpPos+1); + theOutString.Append(theNCRStr); + } break; } //switch - - theOutString.Append(theEntity); + + if(theEntity) { + theOutString.Append(theEntity); + } theAmpPos = aString.FindChar('&',PR_FALSE,theSemiPos+1); } //while diff --git a/mozilla/layout/html/document/src/nsHTMLContentSink.cpp b/mozilla/layout/html/document/src/nsHTMLContentSink.cpp index bea53df7247..6144372069d 100644 --- a/mozilla/layout/html/document/src/nsHTMLContentSink.cpp +++ b/mozilla/layout/html/document/src/nsHTMLContentSink.cpp @@ -676,10 +676,18 @@ void HTMLContentSink::ReduceEntities(nsString& aString) { dtd->ConvertEntityToUnicode(theNCRStr, &theNCRValue); theEntity=PRUnichar(theNCRValue); } + else { + //what looked like an entity is not really one. + //so let's copy the ncrstring back to the output string + aString.Mid(theNCRStr,theAmpPos,theSemiPos-theAmpPos+1); + theOutString.Append(theNCRStr); + } break; } //switch - - theOutString.Append(theEntity); + + if(theEntity) { + theOutString.Append(theEntity); + } theAmpPos = aString.FindChar('&',PR_FALSE,theSemiPos+1); } //while