@@ -573,29 +573,23 @@ namespace hnswlib {
573573 visited_list_pool_ = new VisitedListPool (1 , new_max_elements);
574574
575575
576-
577576 element_levels_.resize (new_max_elements);
578577
579578 std::vector<std::mutex>(new_max_elements).swap (link_list_locks_);
580579
581580 // Reallocate base layer
582- char * data_level0_memory_new = (char *) malloc ( new_max_elements * size_data_per_element_);
581+ char * data_level0_memory_new = (char *) realloc (data_level0_memory_, new_max_elements * size_data_per_element_);
583582 if (data_level0_memory_new == nullptr )
584583 throw std::runtime_error (" Not enough memory: resizeIndex failed to allocate base layer" );
585- memcpy (data_level0_memory_new, data_level0_memory_,cur_element_count * size_data_per_element_);
586- free (data_level0_memory_);
587- data_level0_memory_=data_level0_memory_new;
584+ data_level0_memory_ = data_level0_memory_new;
588585
589586 // Reallocate all other layers
590- char ** linkLists_new = (char **) malloc ( sizeof (void *) * new_max_elements);
587+ char ** linkLists_new = (char **) realloc (linkLists_, sizeof (void *) * new_max_elements);
591588 if (linkLists_new == nullptr )
592589 throw std::runtime_error (" Not enough memory: resizeIndex failed to allocate other layers" );
593- memcpy (linkLists_new, linkLists_,cur_element_count * sizeof (void *));
594- free (linkLists_);
595- linkLists_=linkLists_new;
596-
597- max_elements_=new_max_elements;
590+ linkLists_ = linkLists_new;
598591
592+ max_elements_ = new_max_elements;
599593 }
600594
601595 void saveIndex (const std::string &location) {
0 commit comments