summaryrefslogtreecommitdiff
path: root/src/common/host_memory.cpp
diff options
context:
space:
mode:
authorGravatar Morph2022-03-02 18:31:15 -0500
committerGravatar Morph2022-03-02 18:36:59 -0500
commitb33f23cc4615f2eee002a972a62eb50eec8e18e5 (patch)
treeb5d3b7410bc77b511e4eee8e8a3d077c3b28f403 /src/common/host_memory.cpp
parentMerge pull request #7959 from merryhime/cmpxchg (diff)
downloadyuzu-b33f23cc4615f2eee002a972a62eb50eec8e18e5.tar.gz
yuzu-b33f23cc4615f2eee002a972a62eb50eec8e18e5.tar.xz
yuzu-b33f23cc4615f2eee002a972a62eb50eec8e18e5.zip
host_memory: Fix fastmem crashes in debug builds
It is possible for virtual_offset to not be 0 when the iterator is at the beginning, and thus, std::prev(it) may be evaluated, leading to a crash in debug mode. Co-Authored-By: Fernando S. <1731197+FernandoS27@users.noreply.github.com>
Diffstat (limited to 'src/common/host_memory.cpp')
-rw-r--r--src/common/host_memory.cpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/common/host_memory.cpp b/src/common/host_memory.cpp
index 28949fe5e..c465cfc14 100644
--- a/src/common/host_memory.cpp
+++ b/src/common/host_memory.cpp
@@ -327,8 +327,8 @@ private:
327 bool IsNiechePlaceholder(size_t virtual_offset, size_t length) const { 327 bool IsNiechePlaceholder(size_t virtual_offset, size_t length) const {
328 const auto it = placeholders.upper_bound({virtual_offset, virtual_offset + length}); 328 const auto it = placeholders.upper_bound({virtual_offset, virtual_offset + length});
329 if (it != placeholders.end() && it->lower() == virtual_offset + length) { 329 if (it != placeholders.end() && it->lower() == virtual_offset + length) {
330 const bool is_root = it == placeholders.begin() && virtual_offset == 0; 330 return it == placeholders.begin() ? virtual_offset == 0
331 return is_root || std::prev(it)->upper() == virtual_offset; 331 : std::prev(it)->upper() == virtual_offset;
332 } 332 }
333 return false; 333 return false;
334 } 334 }