From 0e9b080a8ff44a86f30be5f3a7c5ac0c8722dbb5 Mon Sep 17 00:00:00 2001 From: Olivier Goffart Date: Tue, 25 Aug 2009 10:54:07 +0200 Subject: Another memoryleak in QScriptEngine QScriptValuePrivate released by garbage collector later in ~QScriptEnginePrivate (when destroying the agents) would be added to the freelist and not be released Reviewed-by: Kent Hansen --- src/script/api/qscriptengine.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/script/api/qscriptengine.cpp b/src/script/api/qscriptengine.cpp index f4e9594..c14e38a 100644 --- a/src/script/api/qscriptengine.cpp +++ b/src/script/api/qscriptengine.cpp @@ -836,11 +836,6 @@ QScriptEnginePrivate::QScriptEnginePrivate() QScriptEnginePrivate::~QScriptEnginePrivate() { - while (freeScriptValues) { - QScriptValuePrivate *p = freeScriptValues; - freeScriptValues = p->next; - qFree(p); - } while (!ownedAgents.isEmpty()) delete ownedAgents.takeFirst(); detachAllRegisteredScriptValues(); @@ -849,6 +844,11 @@ QScriptEnginePrivate::~QScriptEnginePrivate() JSC::JSLock lock(false); globalData->heap.destroy(); globalData->deref(); + while (freeScriptValues) { + QScriptValuePrivate *p = freeScriptValues; + freeScriptValues = p->next; + qFree(p); + } } QScriptValue QScriptEnginePrivate::scriptValueFromVariant(const QVariant &v) -- cgit v0.12