diff options
-rw-r--r-- | chromium/third_party/blink/renderer/core/typed_arrays/dom_array_buffer.cc | 15 | ||||
-rw-r--r-- | chromium/third_party/blink/renderer/core/typed_arrays/dom_array_buffer.h | 2 |
2 files changed, 15 insertions, 2 deletions
diff --git a/chromium/third_party/blink/renderer/core/typed_arrays/dom_array_buffer.cc b/chromium/third_party/blink/renderer/core/typed_arrays/dom_array_buffer.cc index e4e9c0a05eb..54b3be79f0c 100644 --- a/chromium/third_party/blink/renderer/core/typed_arrays/dom_array_buffer.cc +++ b/chromium/third_party/blink/renderer/core/typed_arrays/dom_array_buffer.cc @@ -44,13 +44,24 @@ bool DOMArrayBuffer::Transfer(v8::Isolate* isolate, to_transfer = DOMArrayBuffer::Create(Buffer()->Data(), Buffer()->ByteLength()); } + return to_transfer->TransferNeuterable(isolate, result); +} + +bool DOMArrayBuffer::TransferNeuterable(v8::Isolate* isolate, + WTF::ArrayBufferContents& result) { + DCHECK(IsNeuterable(isolate)); + + if (IsNeutered()) { + result.Neuter(); + return false; + } - if (!to_transfer->Buffer()->Transfer(result)) + if (!Buffer()->Transfer(result)) return false; Vector<v8::Local<v8::ArrayBuffer>, 4> buffer_handles; v8::HandleScope handle_scope(isolate); - AccumulateArrayBuffersForAllWorlds(isolate, to_transfer, buffer_handles); + AccumulateArrayBuffersForAllWorlds(isolate, this, buffer_handles); for (const auto& buffer_handle : buffer_handles) buffer_handle->Neuter(); diff --git a/chromium/third_party/blink/renderer/core/typed_arrays/dom_array_buffer.h b/chromium/third_party/blink/renderer/core/typed_arrays/dom_array_buffer.h index e07467790a2..53b053214a8 100644 --- a/chromium/third_party/blink/renderer/core/typed_arrays/dom_array_buffer.h +++ b/chromium/third_party/blink/renderer/core/typed_arrays/dom_array_buffer.h @@ -54,6 +54,8 @@ class CORE_EXPORT DOMArrayBuffer final : public DOMArrayBufferBase { v8::Local<v8::Object> creation_context) override; private: + bool TransferNeuterable(v8::Isolate*, WTF::ArrayBufferContents& result); + explicit DOMArrayBuffer(scoped_refptr<WTF::ArrayBuffer> buffer) : DOMArrayBufferBase(std::move(buffer)) {} }; |