diff --git a/Core/Debugger/MemBlockInfo.cpp b/Core/Debugger/MemBlockInfo.cpp index f727d3a484..0f6be382bf 100644 --- a/Core/Debugger/MemBlockInfo.cpp +++ b/Core/Debugger/MemBlockInfo.cpp @@ -288,7 +288,12 @@ void MemSlabMap::Clear() { MemSlabMap::Slab *MemSlabMap::FindSlab(uint32_t addr) { // Jump ahead using our index. - Slab *slab = heads_[addr / SLICE_SIZE]; + size_t slabIndex = addr / SLICE_SIZE; + if (slabIndex >= heads_.size()) { + // Shouldn't happen, but apparently can. + return nullptr; + } + Slab *slab = heads_[slabIndex]; // We often move forward, so check the last find. if (lastFind_->start > slab->start && lastFind_->start <= addr) slab = lastFind_;