aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org>2021-08-10 11:56:30 +0300
committerSergey Poznyakoff <gray@gnu.org>2021-08-10 11:56:30 +0300
commitd2a7d621722b8f80caf3f3081a28fbd06781f405 (patch)
treef637f8fe44f110221eb266a0302c3327e053f256 /src
parent87eef99167cda73bd07071d8d31c3362b5f684a0 (diff)
downloadgdbm-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.h2
-rw-r--r--src/recover.c3
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;

Return to:

Send suggestions and report system problems to the System administrator.