aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/qml
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@theqtcompany.com>2014-12-11 10:55:32 +0100
committerSimon Hausmann <simon.hausmann@digia.com>2014-12-20 12:00:19 +0100
commit234e933b1527510bc487435a9e46c4338d7b9701 (patch)
tree64af81cf3309154b9af40a904cbb69bdd181043a /src/qml/qml
parent4a194d425136ed8ef726ba60da74e44759118556 (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.cpp6
-rw-r--r--src/qml/qml/v8/qv8engine_p.h3
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; }