mirror of https://github.com/tc39/test262.git
28 lines
875 B
JavaScript
28 lines
875 B
JavaScript
// Copyright 2018 the V8 project authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
// Tests that creating an iterator that shrinks the array populated by
|
|
// Array.from does not lead to out of bounds writes.
|
|
let oobArray = [];
|
|
let maxSize = 1028 * 8;
|
|
Array.from.call(function() { return oobArray }, {[Symbol.iterator] : _ => (
|
|
{
|
|
counter : 0,
|
|
next() {
|
|
let result = this.counter++;
|
|
if (this.counter > maxSize) {
|
|
oobArray.length = 0;
|
|
return {done: true};
|
|
} else {
|
|
return {value: result, done: false};
|
|
}
|
|
}
|
|
}
|
|
) });
|
|
assertEquals(oobArray.length, maxSize);
|
|
|
|
// iterator reset the length to 0 just before returning done, so this will crash
|
|
// if the backing store was not resized correctly.
|
|
oobArray[oobArray.length - 1] = 0x41414141;
|