diff options
author | Lars Knoll <lars.knoll@qt.io> | 2018-08-10 15:41:59 +0200 |
---|---|---|
committer | Lars Knoll <lars.knoll@qt.io> | 2018-08-23 08:13:00 +0000 |
commit | 271e0d56bce54c0a662fe0e948f28a1886b14a55 (patch) | |
tree | 2d6507de5f83d1c8952be3e660b311b1c45e5427 /src/qml/jsruntime/qv4object.cpp | |
parent | 8ee5dff21c3701a5a0dd1de9bed563da0aa12ef6 (diff) |
Fix bugs in ArrayBuffer.prototype.slice
Change-Id: I6de8031a04c372a5309a878811da55b93b53da3d
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Diffstat (limited to 'src/qml/jsruntime/qv4object.cpp')
-rw-r--r-- | src/qml/jsruntime/qv4object.cpp | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/qml/jsruntime/qv4object.cpp b/src/qml/jsruntime/qv4object.cpp index 6a6687661c..72f9f84bb2 100644 --- a/src/qml/jsruntime/qv4object.cpp +++ b/src/qml/jsruntime/qv4object.cpp @@ -960,6 +960,26 @@ bool Object::isArray() const return false; } +const FunctionObject *Object::speciesConstructor(Scope &scope, const FunctionObject *defaultConstructor) const +{ + ScopedValue C(scope, get(scope.engine->id_constructor())); + if (C->isUndefined()) + return defaultConstructor; + const Object *c = C->objectValue(); + if (!c) { + scope.engine->throwTypeError(); + return nullptr; + } + ScopedValue S(scope, c->get(scope.engine->symbol_species())); + if (S->isNullOrUndefined()) + return defaultConstructor; + if (!S->isFunctionObject()) { + scope.engine->throwTypeError(); + return nullptr; + } + return static_cast<const FunctionObject *>(S.ptr); +} + DEFINE_OBJECT_VTABLE(ArrayObject); |