aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--NEWS17
-rw-r--r--configure.ac4
-rw-r--r--src/Makefile.am2
-rw-r--r--src/bucket.c2
-rw-r--r--src/falloc.c2
-rw-r--r--src/gdbmopen.c2
-rw-r--r--src/gdbmsetopt.c2
-rw-r--r--src/gdbmtool.c2
8 files changed, 20 insertions, 13 deletions
diff --git a/NEWS b/NEWS
index ba245aa..76f7db0 100644
--- a/NEWS
+++ b/NEWS
@@ -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]);

Return to:

Send suggestions and report system problems to the System administrator.