diff --git a/rpcs3/util/auto_typemap.hpp b/rpcs3/util/auto_typemap.hpp index fba32e74a7..58f5b7d257 100644 --- a/rpcs3/util/auto_typemap.hpp +++ b/rpcs3/util/auto_typemap.hpp @@ -44,6 +44,7 @@ namespace stx static void call_dtor(void* ptr) noexcept { std::launder(static_cast(ptr))->~T(); + std::memset(ptr, 0xCC, sizeof(T)); // Set to trap values } template @@ -93,9 +94,11 @@ namespace stx { ensure(Size >= stx::typelist().size()); ensure(Align >= stx::typelist().align()); - m_data[0] = 0; } + // Set to trap values + std::memset(Size == 0 ? m_list : m_data, 0xCC, stx::typelist().size()); + for (const auto& type : stx::typelist()) { const u32 id = type.index(); diff --git a/rpcs3/util/fixed_typemap.hpp b/rpcs3/util/fixed_typemap.hpp index 0679de49c2..b8844e22a6 100644 --- a/rpcs3/util/fixed_typemap.hpp +++ b/rpcs3/util/fixed_typemap.hpp @@ -122,6 +122,7 @@ namespace stx static void call_dtor(void* ptr) noexcept { std::launder(static_cast(ptr))->~T(); + std::memset(ptr, 0xCC, sizeof(T)); // Set to trap values } template @@ -219,9 +220,11 @@ namespace stx { ensure(Size >= stx::typelist().size()); ensure(Align >= stx::typelist().align()); - m_data[0] = 0; } + // Set to trap values + std::memset(Size == 0 ? m_list : m_data, 0xCC, stx::typelist().size()); + *m_order++ = nullptr; *m_info++ = nullptr; }