diff options
author | Lars Knoll <lars.knoll@theqtcompany.com> | 2014-11-17 19:48:15 +0100 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@digia.com> | 2014-12-10 14:04:20 +0100 |
commit | 7a0542d45e9f675f361477927bec1bbb0fa7a88d (patch) | |
tree | 1b92149cafdf8ced7f8bb1508436a8a192699eb4 /src/qml/jsruntime/qv4lookup.cpp | |
parent | 4f626f32d91ce3a8d8d3967137f1f170b1ce080f (diff) |
Fix arrayData accesses in qv4lookup.cpp
Change-Id: I39a2e4f14afda2c0e909584682ef24a8b030025b
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Diffstat (limited to 'src/qml/jsruntime/qv4lookup.cpp')
-rw-r--r-- | src/qml/jsruntime/qv4lookup.cpp | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/src/qml/jsruntime/qv4lookup.cpp b/src/qml/jsruntime/qv4lookup.cpp index f153c92163..b93230606f 100644 --- a/src/qml/jsruntime/qv4lookup.cpp +++ b/src/qml/jsruntime/qv4lookup.cpp @@ -142,8 +142,8 @@ ReturnedValue Lookup::indexedGetterFallback(Lookup *l, const ValueRef object, co } if (idx < UINT_MAX) { - if (o->arrayData() && !o->arrayData()->hasAttributes()) { - ScopedValue v(scope, o->arrayData()->get(idx)); + if (o->d()->arrayData && !o->d()->arrayData->attrs) { + ScopedValue v(scope, Scoped<ArrayData>(scope, o->arrayData())->get(idx)); if (!v->isEmpty()) return v->asReturnedValue(); } @@ -166,9 +166,9 @@ ReturnedValue Lookup::indexedGetterObjectInt(Lookup *l, const ValueRef object, c return indexedGetterGeneric(l, object, index); Object *o = object->objectValue(); - if (o->arrayData() && o->arrayData()->type() == Heap::ArrayData::Simple) { - SimpleArrayData *s = static_cast<SimpleArrayData *>(o->arrayData()); - if (idx < s->len()) + if (o->d()->arrayData && o->d()->arrayData->type == Heap::ArrayData::Simple) { + Heap::SimpleArrayData *s = static_cast<Heap::SimpleArrayData *>(o->d()->arrayData); + if (idx < s->len) if (!s->data(idx).isEmpty()) return s->data(idx).asReturnedValue(); } @@ -180,7 +180,7 @@ void Lookup::indexedSetterGeneric(Lookup *l, const ValueRef object, const ValueR { if (object->isObject()) { Object *o = object->objectValue(); - if (o->arrayData() && o->arrayData()->type() == Heap::ArrayData::Simple && index->asArrayIndex() < UINT_MAX) { + if (o->d()->arrayData && o->d()->arrayData->type == Heap::ArrayData::Simple && index->asArrayIndex() < UINT_MAX) { l->indexedSetter = indexedSetterObjectInt; indexedSetterObjectInt(l, object, index, v); return; @@ -198,9 +198,9 @@ void Lookup::indexedSetterFallback(Lookup *l, const ValueRef object, const Value uint idx = index->asArrayIndex(); if (idx < UINT_MAX) { - if (o->arrayData() && o->arrayData()->type() == Heap::ArrayData::Simple) { - SimpleArrayData *s = static_cast<SimpleArrayData *>(o->arrayData()); - if (idx < s->len() && !s->data(idx).isEmpty()) { + if (o->d()->arrayData && o->d()->arrayData->type == Heap::ArrayData::Simple) { + Heap::SimpleArrayData *s = static_cast<Heap::SimpleArrayData *>(o->d()->arrayData); + if (idx < s->len) { s->data(idx) = value; return; } @@ -222,9 +222,9 @@ void Lookup::indexedSetterObjectInt(Lookup *l, const ValueRef object, const Valu } Object *o = object->objectValue(); - if (o->arrayData() && o->arrayData()->type() == Heap::ArrayData::Simple) { - SimpleArrayData *s = static_cast<SimpleArrayData *>(o->arrayData()); - if (idx < s->len() && !s->data(idx).isEmpty()) { + if (o->d()->arrayData && o->d()->arrayData->type == Heap::ArrayData::Simple) { + Heap::SimpleArrayData *s = static_cast<Heap::SimpleArrayData *>(o->d()->arrayData); + if (idx < s->len) { s->data(idx) = v; return; } |