diff --git a/mozilla/content/html/document/src/nsHTMLDocument.cpp b/mozilla/content/html/document/src/nsHTMLDocument.cpp index cd91b0a1b72..cf8d6831f03 100644 --- a/mozilla/content/html/document/src/nsHTMLDocument.cpp +++ b/mozilla/content/html/document/src/nsHTMLDocument.cpp @@ -437,14 +437,14 @@ nsHTMLDocument::StartDocumentLoad(const char* aCommand, } nsXPIDLCString referrerHeader; - nsAutoString referrer; // The misspelled key 'referer' is as per the HTTP spec rv = httpChannel->GetRequestHeader("referer", getter_Copies(referrerHeader)); if (NS_SUCCEEDED(rv)) { - referrer.AssignWithConversion(NS_STATIC_CAST(const char*, - referrerHeader)); + nsAutoString referrer; + referrer.AssignWithConversion(referrerHeader); + SetReferrer(referrer); } @@ -459,29 +459,37 @@ nsHTMLDocument::StartDocumentLoad(const char* aCommand, contenttypeheader)); PRInt32 start = contentType.RFind("charset=", PR_TRUE ) ; + if(start != kNotFound) { start += 8; // 8 = "charset=".length PRInt32 end = 0; - if(PRUnichar('"') == contentType.CharAt(start)) { + if (contentType.Length() >= (PRUint32)start && + contentType.CharAt(start) == PRUnichar('"')) { start++; - end = contentType.FindCharInSet("\"", start ); - if(kNotFound == end ) - end = contentType.Length(); - } else { - end = contentType.FindCharInSet(";\n\r ", start ); - if(kNotFound == end ) - end = contentType.Length(); - } - nsAutoString theCharset; - contentType.Mid(theCharset, start, end - start); - nsCOMPtr calias(do_CreateInstance(kCharsetAliasCID, - &rv)); + end = contentType.FindCharInSet("\"", start); + + if (kNotFound == end) { + end = contentType.Length(); + } + } else { + end = contentType.FindCharInSet(";\n\r ", start); + + if(kNotFound == end) { + end = contentType.Length(); + } + } + + nsCOMPtr calias = + do_CreateInstance(kCharsetAliasCID); + + if (calias) { + nsAutoString theCharset; + contentType.Mid(theCharset, start, end - start); - if(calias) { nsAutoString preferred; rv = calias->GetPreferred(theCharset, preferred); - if(NS_SUCCEEDED(rv)) { + if (NS_SUCCEEDED(rv)) { #ifdef DEBUG_charset char* cCharset = charset.ToNewCString(); printf("From HTTP Header, charset = %s\n", cCharset);