aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/qml/v8/qv8jsonwrapper.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/qml/qml/v8/qv8jsonwrapper.cpp')
-rw-r--r--src/qml/qml/v8/qv8jsonwrapper.cpp20
1 files changed, 9 insertions, 11 deletions
diff --git a/src/qml/qml/v8/qv8jsonwrapper.cpp b/src/qml/qml/v8/qv8jsonwrapper.cpp
index ff8b69f580..5ba59b2263 100644
--- a/src/qml/qml/v8/qv8jsonwrapper.cpp
+++ b/src/qml/qml/v8/qv8jsonwrapper.cpp
@@ -82,7 +82,7 @@ v8::Handle<v8::Value> QV8JsonWrapper::fromJsonValue(const QJsonValue &value)
}
QJsonValue QV8JsonWrapper::toJsonValue(v8::Handle<v8::Value> value,
- QSet<int> &visitedObjects)
+ V8ObjectSet &visitedObjects)
{
if (value->IsString())
return QJsonValue(QJSConverter::toString(value.As<v8::String>()));
@@ -109,22 +109,21 @@ v8::Local<v8::Object> QV8JsonWrapper::fromJsonObject(const QJsonObject &object)
}
QJsonObject QV8JsonWrapper::toJsonObject(v8::Handle<v8::Value> value,
- QSet<int> &visitedObjects)
+ V8ObjectSet &visitedObjects)
{
QJsonObject result;
if (!value->IsObject() || value->IsArray() || value->IsFunction())
return result;
v8::Handle<v8::Object> v8object(value.As<v8::Object>());
- int hash = v8object->GetIdentityHash();
- if (visitedObjects.contains(hash)) {
+ if (visitedObjects.contains(v8object)) {
// Avoid recursion.
// For compatibility with QVariant{List,Map} conversion, we return an
// empty object (and no error is thrown).
return result;
}
- visitedObjects.insert(hash);
+ visitedObjects.insert(v8object);
v8::Local<v8::Array> propertyNames = m_engine->getOwnPropertyNames(v8object);
uint32_t length = propertyNames->Length();
@@ -136,7 +135,7 @@ QJsonObject QV8JsonWrapper::toJsonObject(v8::Handle<v8::Value> value,
toJsonValue(propertyValue, visitedObjects));
}
- visitedObjects.remove(hash);
+ visitedObjects.remove(v8object);
return result;
}
@@ -151,22 +150,21 @@ v8::Local<v8::Array> QV8JsonWrapper::fromJsonArray(const QJsonArray &array)
}
QJsonArray QV8JsonWrapper::toJsonArray(v8::Handle<v8::Value> value,
- QSet<int> &visitedObjects)
+ V8ObjectSet &visitedObjects)
{
QJsonArray result;
if (!value->IsArray())
return result;
v8::Handle<v8::Array> v8array(value.As<v8::Array>());
- int hash = v8array->GetIdentityHash();
- if (visitedObjects.contains(hash)) {
+ if (visitedObjects.contains(v8array)) {
// Avoid recursion.
// For compatibility with QVariant{List,Map} conversion, we return an
// empty array (and no error is thrown).
return result;
}
- visitedObjects.insert(hash);
+ visitedObjects.insert(v8array);
uint32_t length = v8array->Length();
for (uint32_t i = 0; i < length; ++i) {
@@ -175,7 +173,7 @@ QJsonArray QV8JsonWrapper::toJsonArray(v8::Handle<v8::Value> value,
result.append(toJsonValue(element, visitedObjects));
}
- visitedObjects.remove(hash);
+ visitedObjects.remove(v8array);
return result;
}