summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/recover.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/recover.c b/src/recover.c
index b4b577c..0a82507 100644
--- a/src/recover.c
+++ b/src/recover.c
@@ -105,6 +105,8 @@ _gdbm_finish_transfer (GDBM_FILE dbf, GDBM_FILE new_dbf,
return -1;
}
+ _gdbmsync_done (dbf);
+
#if HAVE_MMAP
_gdbm_mapped_unmap (dbf);
#endif
@@ -153,6 +155,10 @@ _gdbm_finish_transfer (GDBM_FILE dbf, GDBM_FILE new_dbf,
dbf->bucket = new_dbf->bucket;
dbf->bucket_dir = new_dbf->bucket_dir;
+ dbf->avail = new_dbf->avail;
+ dbf->avail_size = new_dbf->avail_size;
+ dbf->xheader = new_dbf->xheader;
+
dbf->cache_size = new_dbf->cache_size;
dbf->cache_num = new_dbf->cache_num;
dbf->cache_tree = new_dbf->cache_tree;
@@ -399,6 +405,7 @@ gdbm_recover (GDBM_FILE dbf, gdbm_recovery *rcvr, int flags)
new_dbf = gdbm_fd_open (fd, new_name, dbf->header->block_size,
GDBM_WRCREAT
| (dbf->cloexec ? GDBM_CLOEXEC : 0)
+ | (dbf->xheader ? GDBM_NUMSYNC : 0)
| GDBM_CLOERROR, dbf->fatal_err);
SAVE_ERRNO (free (new_name));