I've seen: When deleting a region, also the matches from that region are removed. So the
address >= (unsigned long)region->start
check can be removed when remembering the previously found region.