Skip to content

Commit 11bffd7

Browse files
committed
Attempting to fix Python bindings
1 parent a070bc5 commit 11bffd7

File tree

2 files changed

+12
-1
lines changed

2 files changed

+12
-1
lines changed

hnswlib/hnswlib.h

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -491,6 +491,17 @@ class ChunkedArray {
491491
}
492492
}
493493

494+
void copyTo(char* destination, size_t num_bytes) {
495+
size_t chunk_index = 0;
496+
size_t bytes_per_chunk = getSizePerChunk();
497+
while (num_bytes > 0) {
498+
size_t cur_size = std::min(bytes_per_chunk, num_bytes);
499+
memcpy(destination, chunks_[chunk_index].get(), cur_size);
500+
num_bytes -= cur_size;
501+
destination += cur_size;
502+
}
503+
}
504+
494505
private:
495506
size_t getChunkCount(size_t element_count) const {
496507
return (element_count + elements_per_chunk_ - 1) / elements_per_chunk_;

python_bindings/bindings.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -383,7 +383,7 @@ class Index {
383383

384384
memset(link_list_npy, 0, link_npy_size);
385385

386-
memcpy(data_level0_npy, appr_alg->data_level0_memory_, level0_npy_size);
386+
appr_alg->data_level0_memory_.copyTo(data_level0_npy, level0_npy_size);
387387
memcpy(element_levels_npy, appr_alg->element_levels_.data(), appr_alg->element_levels_.size() * sizeof(int));
388388

389389
for (size_t i = 0; i < appr_alg->cur_element_count; i++) {

0 commit comments

Comments
 (0)