diff options
Diffstat (limited to 'src/qml/jsapi/qjsvalue.cpp')
-rw-r--r-- | src/qml/jsapi/qjsvalue.cpp | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/src/qml/jsapi/qjsvalue.cpp b/src/qml/jsapi/qjsvalue.cpp index 6b3d15df59..87c45e4779 100644 --- a/src/qml/jsapi/qjsvalue.cpp +++ b/src/qml/jsapi/qjsvalue.cpp @@ -974,12 +974,16 @@ bool QJSValue::deleteProperty(const QString &name) */ bool QJSValue::hasProperty(const QString &name) const { - Object *o = d->value.asObject(); + ExecutionEngine *engine = d->engine; + if (!engine) + return false; + + Scope scope(engine); + ScopedObject o(scope, d->value); if (!o) return false; - ExecutionEngine *engine = d->engine; - String *s = engine->newIdentifier(name); + ScopedString s(scope, engine->newIdentifier(name)); return o->__hasProperty__(s); } @@ -991,12 +995,16 @@ bool QJSValue::hasProperty(const QString &name) const */ bool QJSValue::hasOwnProperty(const QString &name) const { - Object *o = d->value.asObject(); + ExecutionEngine *engine = d->engine; + if (!engine) + return false; + + Scope scope(engine); + ScopedObject o(scope, d->value); if (!o) return false; - ExecutionEngine *engine = d->engine; - String *s = engine->newIdentifier(name); + ScopedString s(scope, engine->newIdentifier(name)); return o->__getOwnProperty__(s); } |