diff options
Diffstat (limited to 'libdb/db_manage.c')
-rw-r--r-- | libdb/db_manage.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/libdb/db_manage.c b/libdb/db_manage.c index 17a0be5..5fc6fe9 100644 --- a/libdb/db_manage.c +++ b/libdb/db_manage.c @@ -77,12 +77,21 @@ int odb_grow_hashtable(odb_data_t * data) if (ftruncate(data->fd, new_file_size)) return 1; +#ifdef MISSING_MREMAP + new_map = mmap(0, new_file_size, PROT_READ | PROT_WRITE, + MAP_SHARED, data->fd, 0); +#else new_map = mremap(data->base_memory, old_file_size, new_file_size, MREMAP_MAYMOVE); +#endif if (new_map == MAP_FAILED) return 1; +#ifdef MISSING_MREMAP + munmap(data->base_memory, old_file_size); +#endif + data->base_memory = new_map; data->descr = odb_to_descr(data); data->descr->size *= 2; |