aboutsummaryrefslogtreecommitdiff
path: root/libdb/db_manage.c
diff options
context:
space:
mode:
Diffstat (limited to 'libdb/db_manage.c')
-rw-r--r--libdb/db_manage.c9
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;