aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/jsruntime/qv4engine.cpp
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@digia.com>2013-10-11 12:26:27 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-10-11 16:01:24 +0200
commite964fc34269bc2087fb3246172a1890224a160bd (patch)
treeb66e36e3fa6280bc94ad00002c035280ff24deee /src/qml/jsruntime/qv4engine.cpp
parentf6de6160b915b5a35e75746a35c4ef94ceb9b2c2 (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.cpp10
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;
}
}