Index: third_party/WebKit/Source/modules/encoding/TextEncoder.cpp |
diff --git a/third_party/WebKit/Source/modules/encoding/TextEncoder.cpp b/third_party/WebKit/Source/modules/encoding/TextEncoder.cpp |
index fdb5fc5c4fbd6c3b49a1f4651409ff31baececfc..0cf6d0f07074a810001a1555bc70e9bfc9a35f36 100644 |
--- a/third_party/WebKit/Source/modules/encoding/TextEncoder.cpp |
+++ b/third_party/WebKit/Source/modules/encoding/TextEncoder.cpp |
@@ -73,7 +73,7 @@ String TextEncoder::encoding() const |
return name; |
} |
-PassRefPtr<DOMUint8Array> TextEncoder::encode(const String& input) |
+PassRefPtr<DOMUint8Array> TextEncoder::encode(const String& input, ExceptionState& exceptionState) |
{ |
CString result; |
if (input.is8Bit()) |
@@ -84,7 +84,12 @@ PassRefPtr<DOMUint8Array> TextEncoder::encode(const String& input) |
const char* buffer = result.data(); |
const unsigned char* unsignedBuffer = reinterpret_cast<const unsigned char*>(buffer); |
- return DOMUint8Array::create(unsignedBuffer, result.length()); |
+ RefPtr<DOMUint8Array> output = DOMUint8Array::createOrNull(unsignedBuffer, result.length()); |
+ if (!output) { |
+ exceptionState.throwRangeError("Out of memory. Could not allocate the array for storing the encoded data."); |
+ } |
+ |
+ return output.release(); |
} |
} // namespace blink |