diff --git a/rpcs3/Emu/IPC.h b/rpcs3/Emu/IPC.h index d57deea9c6..aeca865b2f 100644 --- a/rpcs3/Emu/IPC.h +++ b/rpcs3/Emu/IPC.h @@ -26,7 +26,9 @@ public: // Get object location std::weak_ptr& wptr = g_ipc.m_map[ipc_key]; - if ((out && !(*out = wptr.lock())) || wptr.expired()) + std::shared_ptr old; + + if ((out && !(old = wptr.lock())) || wptr.expired()) { // Call a function which must return the object if (out) @@ -42,6 +44,11 @@ public: return true; } + if (out) + { + *out = std::move(old); + } + return false; }