fix missing check on swapped item

This commit is contained in:
digant73 2025-04-26 19:39:02 +02:00 committed by kd-11
parent 519a3b5b79
commit d7ef5a85dc

View file

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