| Index: Source/bindings/core/v8/ScriptValueSerializer.cpp
|
| diff --git a/Source/bindings/core/v8/ScriptValueSerializer.cpp b/Source/bindings/core/v8/ScriptValueSerializer.cpp
|
| index 8436a7a0a49b27dda2210c442d715a933de39a92..15644aa4921cdaa9e4f7775891bd547183cdc880 100644
|
| --- a/Source/bindings/core/v8/ScriptValueSerializer.cpp
|
| +++ b/Source/bindings/core/v8/ScriptValueSerializer.cpp
|
| @@ -496,11 +496,9 @@ ScriptValueSerializer::StateBase* ScriptValueSerializer::AbstractObjectState::se
|
| {
|
| while (m_index < m_propertyNames->Length()) {
|
| if (!m_nameDone) {
|
| - v8::Local<v8::Value> propertyName = m_propertyNames->Get(m_index);
|
| - if (StateBase* newState = serializer.checkException(this))
|
| - return newState;
|
| - if (propertyName.IsEmpty())
|
| - return serializer.handleError(InputError, "Empty property names cannot be cloned.", this);
|
| + v8::Local<v8::Value> propertyName;
|
| + if (!m_propertyNames->Get(serializer.context(), m_index).ToLocal(&propertyName))
|
| + return serializer.handleError(JSException, "Failed to get a property while cloning an object.", this);
|
| bool hasStringProperty = propertyName->IsString() && v8CallBoolean(composite()->HasRealNamedProperty(serializer.context(), propertyName.As<v8::String>()));
|
| if (StateBase* newState = serializer.checkException(this))
|
| return newState;
|
| @@ -520,9 +518,9 @@ ScriptValueSerializer::StateBase* ScriptValueSerializer::AbstractObjectState::se
|
| if (StateBase* newState = serializer.doSerialize(m_propertyName, this))
|
| return newState;
|
| }
|
| - v8::Local<v8::Value> value = composite()->Get(m_propertyName);
|
| - if (StateBase* newState = serializer.checkException(this))
|
| - return newState;
|
| + v8::Local<v8::Value> value;
|
| + if (!composite()->Get(serializer.context(), m_propertyName).ToLocal(&value))
|
| + return serializer.handleError(JSException, "Failed to get a property while cloning an object.", this);
|
| m_nameDone = false;
|
| m_propertyName.Clear();
|
| ++m_index;
|
| @@ -553,7 +551,9 @@ ScriptValueSerializer::StateBase* ScriptValueSerializer::ObjectState::objectDone
|
| ScriptValueSerializer::StateBase* ScriptValueSerializer::DenseArrayState::advance(ScriptValueSerializer& serializer)
|
| {
|
| while (m_arrayIndex < m_arrayLength) {
|
| - v8::Local<v8::Value> value = composite().As<v8::Array>()->Get(m_arrayIndex);
|
| + v8::Local<v8::Value> value;
|
| + if (!composite().As<v8::Array>()->Get(serializer.context(), m_arrayIndex).ToLocal(&value))
|
| + return serializer.handleError(JSException, "Failed to get an element while cloning an array.", this);
|
| m_arrayIndex++;
|
| if (StateBase* newState = serializer.checkException(this))
|
| return newState;
|
|
|