diff options
author | Lars Knoll <lars.knoll@digia.com> | 2013-09-25 15:24:50 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-09-28 13:33:39 +0200 |
commit | 150731fc68bcf823bec40729285813d902990cb7 (patch) | |
tree | 7af619f4bc8fac030bc162ce6ead2e2a7be86783 /src/qml/jsruntime/qv4stringobject.cpp | |
parent | c79cc3f30d395c94d4f14b978903d7db4ad871dc (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.cpp | 11 |
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(); |