diff options
author | Lars Knoll <[email protected]> | 2014-10-21 14:54:45 +0200 |
---|---|---|
committer | Simon Hausmann <[email protected]> | 2014-10-27 15:19:08 +0100 |
commit | 51d8f62dacc9b37a50e522162d5438a624ee9168 (patch) | |
tree | 623336ed8c4b2b0ce052be6d3ec6af3ab8f04736 /src/qml/jsruntime/qv4functionobject.cpp | |
parent | 125befb309f5eccd80cbffd815396d35c49c08f2 (diff) |
Rework our simple array implementation
Implement the simple array as a circular buffer instead
of an array with head room. This fixes a couple of severe
issues with performance and memory management if the array
is being used as a queue.
Task-number: QTBUG-41421
Change-Id: I146ad8a874407c108aa8fe1eae68e9957e154847
Reviewed-by: Simon Hausmann <[email protected]>
Diffstat (limited to 'src/qml/jsruntime/qv4functionobject.cpp')
-rw-r--r-- | src/qml/jsruntime/qv4functionobject.cpp | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/src/qml/jsruntime/qv4functionobject.cpp b/src/qml/jsruntime/qv4functionobject.cpp index 84b0eb17af..67f2a0c75c 100644 --- a/src/qml/jsruntime/qv4functionobject.cpp +++ b/src/qml/jsruntime/qv4functionobject.cpp @@ -298,9 +298,9 @@ ReturnedValue FunctionPrototype::method_apply(CallContext *ctx) for (quint32 i = 0; i < len; ++i) callData->args[i] = arr->getIndexed(i); } else { - int alen = qMin(len, arr->arrayData()->length()); - if (alen) - memcpy(callData->args, arr->arrayData()->arrayData(), alen*sizeof(Value)); + uint alen = qMin(len, arr->arrayData()->length()); + for (uint i = 0; i < alen; ++i) + callData->args[i] = static_cast<SimpleArrayData *>(arr->arrayData())->data(i); for (quint32 i = alen; i < len; ++i) callData->args[i] = Primitive::undefinedValue(); } |