diff options
Diffstat (limited to 'src/script/api/qscriptengine.cpp')
-rw-r--r-- | src/script/api/qscriptengine.cpp | 56 |
1 files changed, 6 insertions, 50 deletions
diff --git a/src/script/api/qscriptengine.cpp b/src/script/api/qscriptengine.cpp index afbe6bb..631175a 100644 --- a/src/script/api/qscriptengine.cpp +++ b/src/script/api/qscriptengine.cpp @@ -791,7 +791,7 @@ static QScriptValue __setupPackage__(QScriptContext *ctx, QScriptEngine *eng) } // namespace QScript QScriptEnginePrivate::QScriptEnginePrivate() - : registeredScriptValues(0), inEval(false) + : registeredScriptValues(0), freeScriptValues(0), inEval(false) { qMetaTypeId<QScriptValue>(); @@ -836,6 +836,11 @@ QScriptEnginePrivate::QScriptEnginePrivate() QScriptEnginePrivate::~QScriptEnginePrivate() { + while (freeScriptValues) { + QScriptValuePrivate *p = freeScriptValues; + freeScriptValues = p->next; + qFree(p); + } while (!ownedAgents.isEmpty()) delete ownedAgents.takeFirst(); detachAllRegisteredScriptValues(); @@ -846,34 +851,6 @@ QScriptEnginePrivate::~QScriptEnginePrivate() globalData->deref(); } -QScriptValue QScriptEnginePrivate::scriptValueFromJSCValue(JSC::JSValue value) -{ - if (!value) - return QScriptValue(); - - QScriptValuePrivate *p_value = new QScriptValuePrivate(); - p_value->engine = this; - p_value->initFrom(value); - return QScriptValuePrivate::toPublic(p_value); -} - -JSC::JSValue QScriptEnginePrivate::scriptValueToJSCValue(const QScriptValue &value) -{ - QScriptValuePrivate *vv = QScriptValuePrivate::get(value); - if (!vv) - return JSC::JSValue(); - if (vv->type != QScriptValuePrivate::JSC) { - Q_ASSERT(!vv->engine || vv->engine == this); - vv->engine = this; - if (vv->type == QScriptValuePrivate::Number) { - vv->initFrom(JSC::jsNumber(currentFrame, vv->numberValue)); - } else { //QScriptValuePrivate::String - vv->initFrom(JSC::jsString(currentFrame, vv->stringValue)); - } - } - return vv->jscValue; -} - QScriptValue QScriptEnginePrivate::scriptValueFromVariant(const QVariant &v) { Q_Q(QScriptEngine); @@ -1362,27 +1339,6 @@ bool QScriptEnginePrivate::scriptDisconnect(JSC::JSValue signal, JSC::JSValue re #endif -void QScriptEnginePrivate::registerScriptValue(QScriptValuePrivate *value) -{ - value->prev = 0; - value->next = registeredScriptValues; - if (registeredScriptValues) - registeredScriptValues->prev = value; - registeredScriptValues = value; -} - -void QScriptEnginePrivate::unregisterScriptValue(QScriptValuePrivate *value) -{ - if (value->prev) - value->prev->next = value->next; - if (value->next) - value->next->prev = value->prev; - if (value == registeredScriptValues) - registeredScriptValues = value->next; - value->prev = 0; - value->next = 0; -} - void QScriptEnginePrivate::detachAllRegisteredScriptValues() { QScriptValuePrivate *it; |