diff options
author | Sergey Poznyakoff <gray@gnu.org> | 2021-08-10 11:56:30 +0300 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org> | 2021-08-10 11:56:30 +0300 |
commit | d2a7d621722b8f80caf3f3081a28fbd06781f405 (patch) | |
tree | f637f8fe44f110221eb266a0302c3327e053f256 /src | |
parent | 87eef99167cda73bd07071d8d31c3362b5f684a0 (diff) | |
download | gdbm-d2a7d621722b8f80caf3f3081a28fbd06781f405.tar.gz gdbm-d2a7d621722b8f80caf3f3081a28fbd06781f405.tar.bz2 |
Bugfixes
* src/gdbmdefs.h (SAVE_ERRNO): Preserve both gdbm_errno and errno.
* src/recover.c (_gdbm_finish_transfer): Transfer all cache fields
(cache_mru was missing).
Diffstat (limited to 'src')
-rw-r--r-- | src/gdbmdefs.h | 2 | ||||
-rw-r--r-- | src/recover.c | 3 |
2 files changed, 4 insertions, 1 deletions
diff --git a/src/gdbmdefs.h b/src/gdbmdefs.h index 5857ac5..98f55c3 100644 --- a/src/gdbmdefs.h +++ b/src/gdbmdefs.h @@ -337,9 +337,11 @@ struct gdbm_file_info #define SAVE_ERRNO(code) \ do \ { \ + int __gc = gdbm_errno; \ int __ec = errno; \ code; \ errno = __ec; \ + gdbm_errno = __gc; \ } \ while (0) \ diff --git a/src/recover.c b/src/recover.c index 0a82507..9a89ce8 100644 --- a/src/recover.c +++ b/src/recover.c @@ -162,9 +162,10 @@ _gdbm_finish_transfer (GDBM_FILE dbf, GDBM_FILE new_dbf, dbf->cache_size = new_dbf->cache_size; dbf->cache_num = new_dbf->cache_num; dbf->cache_tree = new_dbf->cache_tree; - dbf->cache_entry = new_dbf->cache_entry; + dbf->cache_mru = new_dbf->cache_mru; dbf->cache_lru = new_dbf->cache_lru; dbf->cache_avail = new_dbf->cache_avail; + dbf->cache_entry = new_dbf->cache_entry; dbf->header_changed = new_dbf->header_changed; dbf->directory_changed = new_dbf->directory_changed; |