Bug 1370070 - Avoid unnecessary string creation. r=smaug
MozReview-Commit-ID: LLQQrCpK630
This commit is contained in:
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user