diff options
author | Lars Knoll <lars.knoll@digia.com> | 2013-10-11 12:26:27 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-10-11 16:01:24 +0200 |
commit | e964fc34269bc2087fb3246172a1890224a160bd (patch) | |
tree | b66e36e3fa6280bc94ad00002c035280ff24deee /src/qml/jsruntime/qv4engine.cpp | |
parent | f6de6160b915b5a35e75746a35c4ef94ceb9b2c2 (diff) |
Fix the remaining objects against self destruction
This makes pretty much all test cases pass with exact
garbage collection.
Change-Id: Ia874e3c17c3984afb7cfe370f9bd3ad8fe46699a
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Diffstat (limited to 'src/qml/jsruntime/qv4engine.cpp')
-rw-r--r-- | src/qml/jsruntime/qv4engine.cpp | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/qml/jsruntime/qv4engine.cpp b/src/qml/jsruntime/qv4engine.cpp index 41eb6fe5ec..6257d8bac9 100644 --- a/src/qml/jsruntime/qv4engine.cpp +++ b/src/qml/jsruntime/qv4engine.cpp @@ -673,12 +673,16 @@ void ExecutionEngine::requireArgumentsAccessors(int n) if (n <= argumentsAccessors.size()) return; + Scope scope(this); + ScopedFunctionObject get(scope); + ScopedFunctionObject set(scope); + uint oldSize = argumentsAccessors.size(); argumentsAccessors.resize(n); for (int i = oldSize; i < n; ++i) { - FunctionObject *get = new (memoryManager) ArgumentsGetterFunction(rootContext, i); - FunctionObject *set = new (memoryManager) ArgumentsSetterFunction(rootContext, i); - Property pd = Property::fromAccessor(get, set); + get = new (memoryManager) ArgumentsGetterFunction(rootContext, i); + set = new (memoryManager) ArgumentsSetterFunction(rootContext, i); + Property pd = Property::fromAccessor(get.getPointer(), set.getPointer()); argumentsAccessors[i] = pd; } } |