mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-07-11 09:18:40 +12:00
Savestates/MSVC: Replace bugged std::unique (compiler bug)
This commit is contained in:
parent
c75b76ddf5
commit
cf77bb7cfc
1 changed files with 19 additions and 2 deletions
|
@ -2008,10 +2008,27 @@ namespace vm
|
||||||
if (loc) loc->get_shared_memory(shared);
|
if (loc) loc->get_shared_memory(shared);
|
||||||
}
|
}
|
||||||
|
|
||||||
shared.erase(std::unique(shared.begin(), shared.end(), [](auto& a, auto& b) { return a.first == b.first; }), shared.end());
|
|
||||||
|
|
||||||
std::map<utils::shm*, usz> shared_map;
|
std::map<utils::shm*, usz> shared_map;
|
||||||
|
|
||||||
|
#ifndef _MSC_VER
|
||||||
|
shared.erase(std::unique(shared.begin(), shared.end(), [](auto& a, auto& b) { return a.first == b.first; }), shared.end());
|
||||||
|
#else
|
||||||
|
// Workaround for bugged std::unique
|
||||||
|
for (auto it = shared.begin(); it != shared.end();)
|
||||||
|
{
|
||||||
|
if (shared_map.count(it->first))
|
||||||
|
{
|
||||||
|
it = shared.erase(it);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
shared_map.emplace(it->first, 0);
|
||||||
|
it++;
|
||||||
|
}
|
||||||
|
|
||||||
|
shared_map.clear();
|
||||||
|
#endif
|
||||||
|
|
||||||
for (auto& p : shared)
|
for (auto& p : shared)
|
||||||
{
|
{
|
||||||
shared_map.emplace(p.first, &p - shared.data());
|
shared_map.emplace(p.first, &p - shared.data());
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue