Index: test/cctest/test-api.cc |
=================================================================== |
--- test/cctest/test-api.cc (revision 3300) |
+++ test/cctest/test-api.cc (working copy) |
@@ -7590,18 +7590,18 @@ |
THREADED_TEST(PixelArray) { |
v8::HandleScope scope; |
LocalContext context; |
- const int kElementCount = 40; |
+ const int kElementCount = 260; |
uint8_t* pixel_data = reinterpret_cast<uint8_t*>(malloc(kElementCount)); |
i::Handle<i::PixelArray> pixels = i::Factory::NewPixelArray(kElementCount, |
pixel_data); |
i::Heap::CollectAllGarbage(false); // Force GC to trigger verification. |
for (int i = 0; i < kElementCount; i++) { |
- pixels->set(i, i); |
+ pixels->set(i, i % 256); |
} |
i::Heap::CollectAllGarbage(false); // Force GC to trigger verification. |
for (int i = 0; i < kElementCount; i++) { |
- CHECK_EQ(i, pixels->get(i)); |
- CHECK_EQ(i, pixel_data[i]); |
+ CHECK_EQ(i % 256, pixels->get(i)); |
+ CHECK_EQ(i % 256, pixel_data[i]); |
} |
v8::Handle<v8::Object> obj = v8::Object::New(); |
@@ -7765,6 +7765,15 @@ |
result = CompileRun("pixels[1] = 23;"); |
CHECK_EQ(23, result->Int32Value()); |
+ // Test for index greater than 255. Regression test for: |
+ // http://code.google.com/p/chromium/issues/detail?id=26337. |
+ result = CompileRun("pixels[256] = 255;"); |
+ CHECK_EQ(255, result->Int32Value()); |
+ result = CompileRun("var i = 0;" |
+ "for (var j = 0; j < 8; j++) { i = pixels[256]; }" |
Søren Thygesen Gjesse
2009/11/18 11:30:16
How about using i+= pixels[256] and checking for i
Mads Ager (chromium)
2009/11/18 11:35:56
The 8 is only there to make sure that we hit the I
|
+ "i"); |
+ CHECK_EQ(255, result->Int32Value()); |
+ |
free(pixel_data); |
} |