diff options
author | Lars Knoll <lars.knoll@theqtcompany.com> | 2014-12-11 10:55:32 +0100 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@digia.com> | 2014-12-20 12:00:19 +0100 |
commit | 234e933b1527510bc487435a9e46c4338d7b9701 (patch) | |
tree | 64af81cf3309154b9af40a904cbb69bdd181043a /src/qml/qml | |
parent | 4a194d425136ed8ef726ba60da74e44759118556 (diff) |
Use pointers to Heap object to avoid recursion
Change-Id: If491b35ba43758bd4792166f7213cd5a11d227d9
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Diffstat (limited to 'src/qml/qml')
-rw-r--r-- | src/qml/qml/v8/qv8engine.cpp | 6 | ||||
-rw-r--r-- | src/qml/qml/v8/qv8engine_p.h | 3 |
2 files changed, 5 insertions, 4 deletions
diff --git a/src/qml/qml/v8/qv8engine.cpp b/src/qml/qml/v8/qv8engine.cpp index ed0f50f16c..5e9e20b416 100644 --- a/src/qml/qml/v8/qv8engine.cpp +++ b/src/qml/qml/v8/qv8engine.cpp @@ -259,7 +259,7 @@ QVariant QV8Engine::objectToVariant(QV4::Object *o, V8ObjectSet *visitedObjects) V8ObjectSet recursionGuardSet; if (!visitedObjects) { visitedObjects = &recursionGuardSet; - } else if (visitedObjects->contains(o)) { + } else if (visitedObjects->contains(o->d())) { // Avoid recursion. // For compatibility with QVariant{List,Map} conversion, we return an // empty object (and no error is thrown). @@ -267,7 +267,7 @@ QVariant QV8Engine::objectToVariant(QV4::Object *o, V8ObjectSet *visitedObjects) return QVariantList(); return QVariantMap(); } - visitedObjects->insert(o); + visitedObjects->insert(o->d()); QVariant result; @@ -302,7 +302,7 @@ QVariant QV8Engine::objectToVariant(QV4::Object *o, V8ObjectSet *visitedObjects) result = map; } - visitedObjects->remove(o); + visitedObjects->remove(o->d()); return result; } diff --git a/src/qml/qml/v8/qv8engine_p.h b/src/qml/qml/v8/qv8engine_p.h index 2379689fb3..4a6737a131 100644 --- a/src/qml/qml/v8/qv8engine_p.h +++ b/src/qml/qml/v8/qv8engine_p.h @@ -165,7 +165,8 @@ class QQmlContextData; class Q_QML_PRIVATE_EXPORT QV8Engine { friend class QJSEngine; - typedef QSet<QV4::Object *> V8ObjectSet; + // ### GC + typedef QSet<QV4::Heap::Object *> V8ObjectSet; public: static QV8Engine* get(QJSEngine* q) { Q_ASSERT(q); return q->handle(); } // static QJSEngine* get(QV8Engine* d) { Q_ASSERT(d); return d->q; } |