diff --git a/rpcs3/Emu/RSX/Common/simple_array.hpp b/rpcs3/Emu/RSX/Common/simple_array.hpp index e6f1819ad3..7bb00f2683 100644 --- a/rpcs3/Emu/RSX/Common/simple_array.hpp +++ b/rpcs3/Emu/RSX/Common/simple_array.hpp @@ -382,22 +382,26 @@ namespace rsx return false; } - void filter(std::predicate auto predicate) + bool erase_if(std::predicate auto predicate) { if (!_size) { - return; + return false; } + bool ret = false; for (auto ptr = _data, last = _data + _size - 1; ptr < last; ptr++) { - if (!predicate(*ptr)) + if (predicate(*ptr)) { // Move item to the end of the list and shrink by 1 std::memcpy(ptr, last, sizeof(Ty)); last = _data + (--_size); + ret = true; } } + + return ret; } void sort(std::predicate auto predicate)