From 75a69b11457ab42648224086b1c5378d99fbcf1e Mon Sep 17 00:00:00 2001 From: container1234 Date: Sat, 14 Mar 2020 21:57:09 +0900 Subject: [PATCH] Breakpoints: Fix crash after clearing all memory breakpoints --- Source/Core/Core/PowerPC/BreakPoints.cpp | 9 +++++++++ Source/Core/Core/PowerPC/BreakPoints.h | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/Source/Core/Core/PowerPC/BreakPoints.cpp b/Source/Core/Core/PowerPC/BreakPoints.cpp index a8dc9c5a6e..fbaeff777e 100644 --- a/Source/Core/Core/PowerPC/BreakPoints.cpp +++ b/Source/Core/Core/PowerPC/BreakPoints.cpp @@ -196,6 +196,15 @@ void MemChecks::Remove(u32 address) }); } +void MemChecks::Clear() +{ + Core::RunAsCPUThread([&] { + m_mem_checks.clear(); + JitInterface::ClearCache(); + PowerPC::DBATUpdated(); + }); +} + TMemCheck* MemChecks::GetMemCheck(u32 address, size_t size) { const auto iter = diff --git a/Source/Core/Core/PowerPC/BreakPoints.h b/Source/Core/Core/PowerPC/BreakPoints.h index 0bef923c48..c00caeef98 100644 --- a/Source/Core/Core/PowerPC/BreakPoints.h +++ b/Source/Core/Core/PowerPC/BreakPoints.h @@ -88,7 +88,7 @@ public: bool OverlapsMemcheck(u32 address, u32 length) const; void Remove(u32 address); - void Clear() { m_mem_checks.clear(); } + void Clear(); bool HasAny() const { return !m_mem_checks.empty(); } private: