diff options
-rw-r--r-- | NEWS | 17 | ||||
-rw-r--r-- | configure.ac | 4 | ||||
-rw-r--r-- | src/Makefile.am | 2 | ||||
-rw-r--r-- | src/bucket.c | 2 | ||||
-rw-r--r-- | src/falloc.c | 2 | ||||
-rw-r--r-- | src/gdbmopen.c | 2 | ||||
-rw-r--r-- | src/gdbmsetopt.c | 2 | ||||
-rw-r--r-- | src/gdbmtool.c | 2 |
8 files changed, 20 insertions, 13 deletions
@@ -1,2 +1,2 @@ -GNU dbm NEWS -- history of user-visible changes. 2018-05-25 +GNU dbm NEWS -- history of user-visible changes. 2018-06-16 Copyright (C) 1990-2018 Free Software Foundation, Inc. @@ -6,7 +6,14 @@ Please send gdbm bug reports to <bug-gdbm@gnu.org>. -Version 1.14.90 +Version 1.15 - 2018-06-15 -FIXME: BUMP VI_MAJOR +* Extensive database consistency checking -* Implement database consistency checks +GDBM tries to detect inconsistencies in input database files as +early as possible. When an inconcistency is detected, a helpful +diagnostics is returned and the database is marked as needing +recovery. From this moment on, any GDBM function trying to access +the database will immediately return error code (instead of +eventually segfaulting as previous versions did). In order to +reconstruct the database and return it to healthy state, the +gdbm_recover function should be used. @@ -35,3 +42,3 @@ e.g.: Upon return from gdbm_recover, this member holds the number of keys -that were not recovered, because the same key has already been stored +that has not been recovered, because the same key had already been stored in the database. The actual number of stored keys is thus diff --git a/configure.ac b/configure.ac index 48ad675..505ba09 100644 --- a/configure.ac +++ b/configure.ac @@ -18,4 +18,4 @@ m4_define([_GDBM_VERSION_MAJOR], 1) -m4_define([_GDBM_VERSION_MINOR], 14) -m4_define([_GDBM_VERSION_PATCH], 90) +m4_define([_GDBM_VERSION_MINOR], 15) +dnl m4_define([_GDBM_VERSION_PATCH], 0) diff --git a/src/Makefile.am b/src/Makefile.am index 0d2ca53..2710bf0 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -35,3 +35,3 @@ gram.h: gram.c # The libraries -VI_CURRENT = 5 +VI_CURRENT = 6 VI_REVISION = 0 diff --git a/src/bucket.c b/src/bucket.c index a3e8f4e..4b69bbe 100644 --- a/src/bucket.c +++ b/src/bucket.c @@ -148,3 +148,3 @@ _gdbm_get_bucket (GDBM_FILE dbf, int dir_index) && bucket->bucket_bits >= 0 - && bucket->bucket_bits <= GDBM_HASH_BITS)) + && bucket->bucket_bits <= dbf->header->dir_bits)) { diff --git a/src/falloc.c b/src/falloc.c index 2f21ebe..6571d9b 100644 --- a/src/falloc.c +++ b/src/falloc.c @@ -294,3 +294,3 @@ push_avail_block (GDBM_FILE dbf) /* Split the header block. */ - temp = malloc (av_size); + temp = calloc (1, av_size); if (temp == NULL) diff --git a/src/gdbmopen.c b/src/gdbmopen.c index 03cc4f4..677f1cf 100644 --- a/src/gdbmopen.c +++ b/src/gdbmopen.c @@ -156,3 +156,3 @@ validate_header (gdbm_file_header const *hdr, struct stat const *st) - if (!(hdr->bucket_size > 0 && hdr->bucket_size > sizeof(hash_bucket))) + if (!(hdr->bucket_size > sizeof(hash_bucket))) return GDBM_BAD_HEADER; diff --git a/src/gdbmsetopt.c b/src/gdbmsetopt.c index f9face0..865f5a5 100644 --- a/src/gdbmsetopt.c +++ b/src/gdbmsetopt.c @@ -56,3 +56,2 @@ setopt_gdbm_setcachesize (GDBM_FILE dbf, void *optval, int optlen) - /* Optval will point to the new size of the cache. */ if (dbf->bucket_cache != NULL) @@ -63,2 +62,3 @@ setopt_gdbm_setcachesize (GDBM_FILE dbf, void *optval, int optlen) + /* Optval will point to the new size of the cache. */ if (get_size (optval, optlen, &sz)) diff --git a/src/gdbmtool.c b/src/gdbmtool.c index 6d56578..d0b2694 100644 --- a/src/gdbmtool.c +++ b/src/gdbmtool.c @@ -921,3 +921,3 @@ list_handler (struct handler_param *param) { - terror (_("cannot fetch data; the key was:")); + terror (_("%s; the key was:"), gdbm_db_strerror (gdbm_file)); datum_format (stderr, &key, dsdef[DS_KEY]); |