Bug 1370070 - Avoid unnecessary string creation. r=smaug

MozReview-Commit-ID: LLQQrCpK630
This commit is contained in:
Eric Rahm
2017-06-09 15:56:35 -07:00
parent dd9d0bb080
commit 36a6b51f90
3 changed files with 19 additions and 5 deletions

View File

@@ -4493,9 +4493,15 @@ nsContentUtils::GetSubdocumentWithOuterWindowId(nsIDocument *aDocument,
/* static */
nsresult
nsContentUtils::ConvertStringFromEncoding(const nsACString& aEncoding,
const nsACString& aInput,
const char* aInput,
uint32_t aInputLen,
nsAString& aOutput)
{
CheckedInt32 len = aInputLen;
if (!len.isValid()) {
return NS_ERROR_OUT_OF_MEMORY;
}
nsAutoCString encoding;
if (aEncoding.IsEmpty()) {
encoding.AssignLiteral("UTF-8");
@@ -4507,7 +4513,7 @@ nsContentUtils::ConvertStringFromEncoding(const nsACString& aEncoding,
nsAutoPtr<TextDecoder> decoder(new TextDecoder());
decoder->InitWithEncoding(encoding, false);
decoder->Decode(aInput.BeginReading(), aInput.Length(), false,
decoder->Decode(aInput, len.value(), false,
aOutput, rv);
return rv.StealNSResult();
}

View File

@@ -624,9 +624,17 @@ public:
* string (meaning UTF-8)
*/
static nsresult ConvertStringFromEncoding(const nsACString& aEncoding,
const nsACString& aInput,
const char* aInput,
uint32_t aInputLen,
nsAString& aOutput);
static nsresult ConvertStringFromEncoding(const nsACString& aEncoding,
const nsACString& aInput,
nsAString& aOutput) {
return ConvertStringFromEncoding(
aEncoding, aInput.BeginReading(), aInput.Length(), aOutput);
}
/**
* Determine whether a buffer begins with a BOM for UTF-8, UTF-16LE,
* UTF-16BE

View File

@@ -480,8 +480,8 @@ FileReader::GetAsText(Blob *aBlob,
}
}
nsDependentCSubstring data(aFileData, aDataLen);
return nsContentUtils::ConvertStringFromEncoding(encoding, data, aResult);
return nsContentUtils::ConvertStringFromEncoding(
encoding, aFileData, aDataLen, aResult);
}
nsresult