aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/jsruntime/qv4stringobject.cpp
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@digia.com>2013-09-25 15:24:50 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-09-28 13:33:39 +0200
commit150731fc68bcf823bec40729285813d902990cb7 (patch)
tree7af619f4bc8fac030bc162ce6ead2e2a7be86783 /src/qml/jsruntime/qv4stringobject.cpp
parentc79cc3f30d395c94d4f14b978903d7db4ad871dc (diff)
Remove more direct QV4::Value usage
Remove Value::fromString(String *), and make Encode safe against encoding raw Managed * pointers. Change-Id: Ibca4668e1cbeaf85c78169d14386281659d33ef6 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Diffstat (limited to 'src/qml/jsruntime/qv4stringobject.cpp')
-rw-r--r--src/qml/jsruntime/qv4stringobject.cpp11
1 files changed, 6 insertions, 5 deletions
diff --git a/src/qml/jsruntime/qv4stringobject.cpp b/src/qml/jsruntime/qv4stringobject.cpp
index 402798f5ba..af6e92105f 100644
--- a/src/qml/jsruntime/qv4stringobject.cpp
+++ b/src/qml/jsruntime/qv4stringobject.cpp
@@ -88,11 +88,12 @@ StringObject::StringObject(InternalClass *ic)
defineReadonlyProperty(ic->engine->id_length, Primitive::fromInt32(0));
}
-StringObject::StringObject(ExecutionEngine *engine, const Value &value)
- : Object(engine->stringClass), value(value)
+StringObject::StringObject(ExecutionEngine *engine, const ValueRef val)
+ : Object(engine->stringClass)
{
vtbl = &static_vtbl;
type = Type_StringObject;
+ value = *val;
tmpProperty.value = Primitive::undefinedValue();
@@ -105,7 +106,7 @@ Property *StringObject::getIndex(uint index) const
QString str = value.stringValue()->toQString();
if (index >= (uint)str.length())
return 0;
- tmpProperty.value = Value::fromString(internalClass->engine->newString(str.mid(index, 1)));
+ tmpProperty.value = Encode(internalClass->engine->newString(str.mid(index, 1)));
return &tmpProperty;
}
@@ -168,7 +169,7 @@ ReturnedValue StringCtor::construct(Managed *m, CallData *callData)
Scope scope(v4);
ScopedValue value(scope);
if (callData->argc)
- value = Value::fromString(callData->args[0].toString(v4->current));
+ value = callData->args[0].toString(v4->current);
else
value = Value::fromString(v4->current, QString());
return Encode(v4->newStringObject(value));
@@ -180,7 +181,7 @@ ReturnedValue StringCtor::call(Managed *m, CallData *callData)
Scope scope(v4);
ScopedValue value(scope);
if (callData->argc)
- value = Value::fromString(callData->args[0].toString(v4->current));
+ value = callData->args[0].toString(v4->current);
else
value = Value::fromString(v4->current, QString());
return value.asReturnedValue();