1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 14:37:46 +00:00

LibJS: Skip trailing empty values in IndexedPropertyIterator

When we reach the end of the pre-computed indices vector we can just
skip to the end (array-like size) as only empty values will follow.

Fixes #3970.
This commit is contained in:
Linus Groh 2020-11-07 00:18:57 +00:00 committed by Andreas Kling
parent d5bb5d109b
commit 021c8dea1f

View file

@ -264,16 +264,13 @@ ValueAndAttributes IndexedPropertyIterator::value_and_attributes(Object* this_ob
void IndexedPropertyIterator::skip_empty_indices() void IndexedPropertyIterator::skip_empty_indices()
{ {
auto indices = m_indexed_properties.indices(); auto indices = m_indexed_properties.indices();
if (indices.is_empty()) {
m_index = m_indexed_properties.array_like_size();
return;
}
for (auto i : indices) { for (auto i : indices) {
if (i < m_index) if (i < m_index)
continue; continue;
m_index = i; m_index = i;
break; return;
} }
m_index = m_indexed_properties.array_like_size();
} }
Optional<ValueAndAttributes> IndexedProperties::get(Object* this_object, u32 index, bool evaluate_accessors) const Optional<ValueAndAttributes> IndexedProperties::get(Object* this_object, u32 index, bool evaluate_accessors) const