rsx: Fix simple_array<T>::erase_if

This commit is contained in:
kd-11 2025-04-13 23:01:05 +03:00 committed by kd-11
parent fcb6bc70f8
commit b3bdff741c

View file

@ -390,14 +390,22 @@ namespace rsx
} }
bool ret = false; bool ret = false;
for (auto ptr = _data, last = _data + _size - 1; ptr < last; ptr++) for (auto ptr = _data, last = _data + _size - 1; ptr <= last; ptr++)
{ {
if (predicate(*ptr)) if (predicate(*ptr))
{ {
ret = true;
if (ptr == last)
{
// Popping the last entry from list. Just set the new size and exit
_size--;
break;
}
// Move item to the end of the list and shrink by 1 // Move item to the end of the list and shrink by 1
std::memcpy(ptr, last, sizeof(Ty)); std::memcpy(ptr, last, sizeof(Ty));
last = _data + (--_size); last = _data + (--_size);
ret = true;
} }
} }