diff options
author | Sergey Poznyakoff <gray@gnu.org> | 2021-08-11 23:01:37 +0300 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org> | 2021-08-11 23:01:37 +0300 |
commit | f77b0273db2d1f0cc1ba2d3256acfab1bda1f584 (patch) | |
tree | 5ec70897287e0757b00ae993d27cf02903d7919c | |
parent | 038872b1582c6b99cc352551875aba0e81f6b5f0 (diff) | |
download | gdbm-f77b0273db2d1f0cc1ba2d3256acfab1bda1f584.tar.gz gdbm-f77b0273db2d1f0cc1ba2d3256acfab1bda1f584.tar.bz2 |
Fix duplicated mmap in gdbm_recover
* src/recover.c (_gdbm_finish_transfer): Reuse memory mapping
from the intermediate dbm structure.
-rw-r--r-- | src/recover.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/src/recover.c b/src/recover.c index 9a89ce8..76a372c 100644 --- a/src/recover.c +++ b/src/recover.c @@ -174,15 +174,16 @@ _gdbm_finish_transfer (GDBM_FILE dbf, GDBM_FILE new_dbf, dbf->file_size = -1; + dbf->mapped_size_max = new_dbf->mapped_size_max; + dbf->mapped_region = new_dbf->mapped_region; + dbf->mapped_size = new_dbf->mapped_size; + dbf->mapped_pos = new_dbf->mapped_pos; + dbf->mapped_off = new_dbf->mapped_off; + dbf->mmap_preread = new_dbf->mmap_preread; + free (new_dbf->name); free (new_dbf); - #if HAVE_MMAP - /* Re-initialize mapping if required */ - if (dbf->memory_mapping) - _gdbm_mapped_init (dbf); - #endif - /* Make sure the new database is all on disk. */ gdbm_file_sync (dbf); |