diff --git a/rpcs3/Emu/NP/np_cache.cpp b/rpcs3/Emu/NP/np_cache.cpp index 0a782eeff2..efe36621bf 100644 --- a/rpcs3/Emu/NP/np_cache.cpp +++ b/rpcs3/Emu/NP/np_cache.cpp @@ -9,12 +9,13 @@ LOG_CHANNEL(np_cache); namespace np { - memberbin_cache::memberbin_cache(SceNpMatching2RoomMemberBinAttrInternal* sce_memberbin) + memberbin_cache::memberbin_cache(const SceNpMatching2RoomMemberBinAttrInternal* sce_memberbin) { - id = sce_memberbin->data.id; + ensure(sce_memberbin && (sce_memberbin->data.ptr.get_ptr() || !sce_memberbin->data.size)); + + id = sce_memberbin->data.id; updateDate.tick = sce_memberbin->updateDate.tick; - data.resize(sce_memberbin->data.size); - memcpy(data.data(), sce_memberbin->data.ptr.get_ptr(), sce_memberbin->data.size); + data = std::vector(sce_memberbin->data.ptr.get_ptr(), sce_memberbin->data.ptr.get_ptr() + sce_memberbin->data.size); } member_cache::member_cache(const SceNpMatching2RoomMemberDataInternal* sce_member) diff --git a/rpcs3/Emu/NP/np_cache.h b/rpcs3/Emu/NP/np_cache.h index df114a9640..9883375e0e 100644 --- a/rpcs3/Emu/NP/np_cache.h +++ b/rpcs3/Emu/NP/np_cache.h @@ -19,7 +19,7 @@ namespace np struct memberbin_cache { - memberbin_cache(SceNpMatching2RoomMemberBinAttrInternal* sce_memberbin); + memberbin_cache(const SceNpMatching2RoomMemberBinAttrInternal* sce_memberbin); SceNpMatching2AttributeId id; CellRtcTick updateDate;