@@ -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