diff --git a/rpcs3/Emu/Memory/vm_ptr.h b/rpcs3/Emu/Memory/vm_ptr.h index 3b0e910627..eb70ee8f13 100644 --- a/rpcs3/Emu/Memory/vm_ptr.h +++ b/rpcs3/Emu/Memory/vm_ptr.h @@ -101,23 +101,31 @@ namespace vm return vm::cast(m_addr); } + template T* get_ptr() const { + if constexpr (Strict) + { + AUDIT(m_addr); + } + return static_cast(vm::base(vm::cast(m_addr))); } T* operator ->() const requires (!std::is_void_v) { - return get_ptr(); + return get_ptr(); } std::add_lvalue_reference_t operator *() const requires (!std::is_void_v) { - return *static_cast(vm::base(vm::cast(m_addr))); + return *get_ptr(); } std::add_lvalue_reference_t operator [](u32 index) const requires (!std::is_void_v) { + AUDIT(m_addr); + return *static_cast(vm::base(vm::cast(m_addr) + u32{sizeof(T)} * index)); }