diff --git a/uc.c b/uc.c index 76c4eb28..a1a71366 100644 --- a/uc.c +++ b/uc.c @@ -1524,7 +1524,7 @@ MemoryRegion *find_memory_region(struct uc_struct *uc, uint64_t address) if (i < uc->mapped_block_count && address >= uc->mapped_blocks[i]->addr && - address < uc->mapped_blocks[i]->end) { + address <= uc->mapped_blocks[i]->end - 1) { return uc->mapped_blocks[i]; } @@ -1532,8 +1532,10 @@ MemoryRegion *find_memory_region(struct uc_struct *uc, uint64_t address) if (i < uc->mapped_block_count && address >= uc->mapped_blocks[i]->addr && - address <= uc->mapped_blocks[i]->end - 1) + address <= uc->mapped_blocks[i]->end - 1) { + uc->mapped_block_cache_index = i; return uc->mapped_blocks[i]; + } // not found return NULL;