aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/jsruntime/qv4arrayobject.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/qml/jsruntime/qv4arrayobject.cpp')
-rw-r--r--src/qml/jsruntime/qv4arrayobject.cpp9
1 files changed, 4 insertions, 5 deletions
diff --git a/src/qml/jsruntime/qv4arrayobject.cpp b/src/qml/jsruntime/qv4arrayobject.cpp
index 4ea979d16e..b79e4b13fe 100644
--- a/src/qml/jsruntime/qv4arrayobject.cpp
+++ b/src/qml/jsruntime/qv4arrayobject.cpp
@@ -73,7 +73,6 @@ ReturnedValue ArrayCtor::construct(Managed *m, CallData *callData)
len = callData->argc;
a->arrayReserve(len);
a->arrayData->put(0, callData->args, len);
- a->arrayData->setLength(len);
}
a->setArrayLengthUnchecked(len);
@@ -303,7 +302,9 @@ ReturnedValue ArrayPrototype::method_push(CallContext *ctx)
return Encode(newLen);
}
- if (!instance->protoHasArray() && instance->arrayData->length() <= len) {
+ if (!ctx->callData->argc) {
+ ;
+ } else if (!instance->protoHasArray() && instance->arrayData->length() <= len) {
len = instance->arrayData->push_back(len, ctx->callData->argc, ctx->callData->args);
} else {
for (int i = 0; i < ctx->callData->argc; ++i)
@@ -483,10 +484,8 @@ ReturnedValue ArrayPrototype::method_splice(CallContext *ctx)
v = instance->getIndexed(start + i, &exists);
if (scope.hasException())
return Encode::undefined();
- if (exists) {
+ if (exists)
newArray->arrayData->put(i, v);
- newArray->arrayData->setLength(i + 1);
- }
}
newArray->setArrayLengthUnchecked(deleteCount);