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>
This commit is contained in:
Morph 2022-03-02 18:31:15 -05:00
parent e06a133717
commit b33f23cc46

View File

@ -327,8 +327,8 @@ private:
bool IsNiechePlaceholder(size_t virtual_offset, size_t length) const { bool IsNiechePlaceholder(size_t virtual_offset, size_t length) const {
const auto it = placeholders.upper_bound({virtual_offset, virtual_offset + length}); const auto it = placeholders.upper_bound({virtual_offset, virtual_offset + length});
if (it != placeholders.end() && it->lower() == virtual_offset + length) { if (it != placeholders.end() && it->lower() == virtual_offset + length) {
const bool is_root = it == placeholders.begin() && virtual_offset == 0; return it == placeholders.begin() ? virtual_offset == 0
return is_root || std::prev(it)->upper() == virtual_offset; : std::prev(it)->upper() == virtual_offset;
} }
return false; return false;
} }