Fix wrong index access in one variant of Array::at()
authorLars Knoll <lars.knoll@digia.com>
Fri, 18 Jan 2013 15:41:42 +0000 (16:41 +0100)
committerSimon Hausmann <simon.hausmann@digia.com>
Fri, 18 Jan 2013 19:06:50 +0000 (20:06 +0100)
Change-Id: I94dc9b08a446ec8d6e26b672a3272365ba9ed320
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
qv4array.h
tests/TestExpectations

index 58529ef..b33163c 100644 (file)
@@ -421,7 +421,7 @@ class Array
         assert(!sparse && !offset);
         offset = qMax(values.size() >> 2, 16);
         QVector<PropertyDescriptor> newValues(values.size() + offset);
-        memcpy(newValues.data() + offset, values.data(), values.size()*sizeof(PropertyDescriptor));
+        memcpy(newValues.data() + offset, values.constData(), values.size()*sizeof(PropertyDescriptor));
         values = newValues;
     }
 
@@ -503,7 +503,7 @@ public:
         if (!sparse) {
             if (index >= values.size() - offset)
                 return 0;
-            return values.data() + index - offset;
+            return values.data() + index + offset;
         } else {
             SparseArrayNode *n = sparse->findNode(index);
             if (!n)
index 90a2883..e775a85 100644 (file)
@@ -1281,8 +1281,6 @@ S15.4.4.4_A1_T2 failing
 15.12.3-11-24 failing
 15.12.3-11-25 failing
 15.2.3.4-4-1 failing
-S15.4.4.13_A1_T1 failing
-S15.4.4.13_A1_T2 failing
 15.4.4.18-7-c-i-6 failing
 15.4.4.19-8-c-i-6 failing
 15.4.4.20-9-c-i-6 failing