| Index: Source/wtf/ArrayBuffer.cpp
|
| diff --git a/Source/wtf/ArrayBuffer.cpp b/Source/wtf/ArrayBuffer.cpp
|
| index cfbdc9de1418bca9204a2a7a94e37116d28251ac..e41586aacc5070e58deee4b0feeb8bdd75bde44b 100644
|
| --- a/Source/wtf/ArrayBuffer.cpp
|
| +++ b/Source/wtf/ArrayBuffer.cpp
|
| @@ -36,10 +36,17 @@ bool ArrayBuffer::transfer(ArrayBufferContents& result)
|
| RefPtr<ArrayBuffer> keepAlive(this);
|
|
|
| if (!m_contents.data()) {
|
| - result.clear();
|
| + result.neuter();
|
| return false;
|
| }
|
|
|
| + if (isShared()) {
|
| + m_contents.transfer(result);
|
| + // Return early to prevent neutering views when transferring
|
| + // SharedArrayBuffers.
|
| + return true;
|
| + }
|
| +
|
| bool allViewsAreNeuterable = true;
|
| for (ArrayBufferView* i = m_firstView; i; i = i->m_nextView) {
|
| if (!i->isNeuterable())
|
|
|