1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-27 15:17:36 +00:00

LibJS: Append first sparse element to packed elements in take_first()

Otherwise we continuously lose the first sparse element (at index
SPARSE_ARRAY_THRESHOLD) without noticing, as we overwrite all indices
with the value at index+1.

Fixes #5884.
This commit is contained in:
Linus Groh 2021-03-20 13:43:42 +01:00 committed by Andreas Kling
parent 611b3c2c49
commit ae95ed5ddd
2 changed files with 20 additions and 3 deletions

View file

@ -21,3 +21,15 @@ describe("normal behavior", () => {
expect(a).toEqual([]);
});
});
test("Issue #5884, GenericIndexedPropertyStorage::take_first() loses elements", () => {
const a = [];
for (let i = 0; i < 300; i++) {
a.push(i);
}
expect(a.length).toBe(300);
for (let i = 0; i < 300; i++) {
a.shift();
}
expect(a.length).toBe(0);
});