Skip to content

Commit 2a23cd1

Browse files
committed
Fix invalid ranges lingering in subsequent results
1 parent 76160f6 commit 2a23cd1

1 file changed

Lines changed: 7 additions & 3 deletions

File tree

src/memory/search.c

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -554,6 +554,9 @@ static void* memory_search_next_callback(Thread* self, void* context) {
554554
if(last_set->results_count == 0) {
555555
continue;
556556
}
557+
if(!memory_search_should_process_type(last_set->type, value, deviation, last_set->type)) {
558+
continue;
559+
}
557560
MemorySearchResultSet* set = &batch->sets[batch->sets_count];
558561
MemoryType type = last_set->type;
559562
set->type = type;
@@ -572,13 +575,13 @@ static void* memory_search_next_callback(Thread* self, void* context) {
572575
thread_self_push_cancel_cleanup(self, free, value_buf);
573576
ProcessHandle* handle = memory_search->handle;
574577
size_t results_progress = 0;
575-
size_t set_i = -1;
578+
size_t set_i = 0;
576579
for(size_t last_set_i = 0; last_set_i < last_batch->sets_count; last_set_i++) {
577580
MemorySearchResultSet* last_set = &last_batch->sets[last_set_i];
578-
if(last_set->results_count == 0) {
581+
MemorySearchResultSet* set = &batch->sets[set_i];
582+
if(set->type != last_set->type) {
579583
continue;
580584
}
581-
MemorySearchResultSet* set = &batch->sets[++set_i];
582585
for(size_t result_i = 0; result_i < last_set->results_count; result_i++) {
583586
// FIXME: check if these are slowing down the search and make it faster
584587
thread_self_quit_if_canceled(self);
@@ -751,6 +754,7 @@ static void* memory_search_next_callback(Thread* self, void* context) {
751754
unreachable();
752755
}
753756
}
757+
set_i++;
754758

755759
results_progress += last_set->results_count;
756760
}

0 commit comments

Comments
 (0)