Index: third_party/WebKit/Source/modules/presentation/PresentationConnection.cpp |
diff --git a/third_party/WebKit/Source/modules/presentation/PresentationConnection.cpp b/third_party/WebKit/Source/modules/presentation/PresentationConnection.cpp |
index b262989882dd4ea2ba48c0107d01fa74a32fdb18..f8df5665adf5a5d3438f6e67516df683dcd07a6e 100644 |
--- a/third_party/WebKit/Source/modules/presentation/PresentationConnection.cpp |
+++ b/third_party/WebKit/Source/modules/presentation/PresentationConnection.cpp |
@@ -203,11 +203,11 @@ void PresentationConnection::send(PassRefPtr<DOMArrayBuffer> arrayBuffer, Except |
void PresentationConnection::send(PassRefPtr<DOMArrayBufferView> arrayBufferView, ExceptionState& exceptionState) |
{ |
- ASSERT(arrayBufferView); |
+ ASSERT(arrayBufferView && arrayBufferView->bufferOrNull()); |
if (!canSendMessage(exceptionState)) |
return; |
- m_messages.append(adoptPtr(new Message(arrayBufferView->buffer()))); |
+ m_messages.append(adoptPtr(new Message(arrayBufferView->bufferOrNull()))); |
handleMessageQueue(); |
} |
@@ -304,9 +304,11 @@ void PresentationConnection::didReceiveBinaryMessage(const uint8_t* data, size_t |
return; |
} |
case BinaryTypeArrayBuffer: |
- RefPtr<DOMArrayBuffer> buffer = DOMArrayBuffer::create(data, length); |
- dispatchEvent(MessageEvent::create(buffer.release())); |
- return; |
+ RefPtr<DOMArrayBuffer> buffer = DOMArrayBuffer::createOrNull(data, length); |
+ // Can't throw a RangeError exception from here, so being out |
+ // of memory will fail silently by dropping the message. |
+ if (buffer) |
+ dispatchEvent(MessageEvent::create(buffer.release())); |
} |
ASSERT_NOT_REACHED(); |
} |