diff options
author | Sergey Poznyakoff <gray@gnu.org> | 2018-05-25 14:17:11 +0300 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org> | 2018-05-25 15:00:01 +0300 |
commit | 655cd193549e20ea8a8e77125adec7c5909c067e (patch) | |
tree | d59f997331bfcec8c0c17afb7bc8438215f09102 /src/recover.c | |
parent | 8d2f483b28f8418703982658b3e7dda7a96ad335 (diff) | |
download | gdbm-655cd193549e20ea8a8e77125adec7c5909c067e.tar.gz gdbm-655cd193549e20ea8a8e77125adec7c5909c067e.tar.bz2 |
More database consistency checks
* NEWS: Update.
* THANKS: Update.
* src/bucket.c (_gdbm_get_bucket): Check if directory entry is
valid. Don't cache invalid buckets.
* src/gdbm.h.in (GDBM_BAD_DIR_ENTRY): New error code.
* src/gdbmerrno.c: Likewise.
* src/gdbmopen.c (validate_header): Compute expected
number of bucket elements based on the bucket size, not on
the block size.
(_gdbm_init_cache_entry): New function.
* src/proto.h (_gdbm_init_cache_entry): New proto.
* src/recover.c (gdbm_recover): Clear error state after return
from check_db indicating failure.
Diffstat (limited to 'src/recover.c')
-rw-r--r-- | src/recover.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/src/recover.c b/src/recover.c index 721c23f..8f05f71 100644 --- a/src/recover.c +++ b/src/recover.c @@ -377,6 +377,7 @@ gdbm_recover (GDBM_FILE dbf, gdbm_recovery *rcvr, int flags) rc = 0; if ((flags & GDBM_RCVR_FORCE) || check_db (dbf)) { + gdbm_clear_error (dbf); len = strlen (dbf->name); new_name = malloc (len + sizeof (TMPSUF)); if (!new_name) |