aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/jsruntime/qv4arraybuffer_p.h
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@qt.io>2018-08-10 13:04:42 +0200
committerSimon Hausmann <simon.hausmann@qt.io>2018-08-20 20:32:27 +0000
commit36ea464b3dcce6319c5252553d48dd5ac6ba8f41 (patch)
tree947dd32727ebbebd2e7d94a2306406c3f2b6ac82 /src/qml/jsruntime/qv4arraybuffer_p.h
parent59a90975bb7aa2dbbfe0986f19da1053275c6fef (diff)
Implement the $262.detachArrayBuffer() method for testing
Change-Id: I30ddca4402254e1cde17712d07ea0bff2ea5f595 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Diffstat (limited to 'src/qml/jsruntime/qv4arraybuffer_p.h')
-rw-r--r--src/qml/jsruntime/qv4arraybuffer_p.h15
1 files changed, 13 insertions, 2 deletions
diff --git a/src/qml/jsruntime/qv4arraybuffer_p.h b/src/qml/jsruntime/qv4arraybuffer_p.h
index 089dbc522f..036d141c2f 100644
--- a/src/qml/jsruntime/qv4arraybuffer_p.h
+++ b/src/qml/jsruntime/qv4arraybuffer_p.h
@@ -69,7 +69,15 @@ struct Q_QML_PRIVATE_EXPORT ArrayBuffer : Object {
void destroy();
QTypedArrayData<char> *data;
- uint byteLength() const { return data->size; }
+ uint byteLength() const { return data ? data->size : 0; }
+
+ void detachArrayBuffer() {
+ if (data && !data->ref.deref())
+ QTypedArrayData<char>::deallocate(data);
+ data = nullptr;
+ }
+ bool isDetachedBuffer() const { return !data; }
+ bool isSharedArrayBuffer() const { return false; }
};
}
@@ -96,8 +104,11 @@ struct Q_QML_PRIVATE_EXPORT ArrayBuffer : Object
char *data() { detach(); return d()->data ? d()->data->data() : nullptr; }
const char *constData() { detach(); return d()->data ? d()->data->data() : nullptr; }
-private:
+ bool isShared() { return d()->data && d()->data->ref.isShared(); }
+ bool isDetachedBuffer() const { return !d()->data; }
+ bool isSharedArrayBuffer() const { return false; }
void detach();
+ void detachArrayBuffer() { d()->detachArrayBuffer(); }
};
struct ArrayBufferPrototype: Object