summaryrefslogtreecommitdiffabout
path: root/src
authorSergey Poznyakoff <gray@gnu.org>2018-08-12 17:17:14 (GMT)
committer Sergey Poznyakoff <gray@gnu.org>2018-08-12 17:17:14 (GMT)
commit4e23fa7b90b56408d480ba8c7556b190757ea2c7 (patch) (side-by-side diff)
tree7763d0dee3681c0a733a490feaf6dbdcf54e3f8d /src
parent6311c6b4d7ebe989447151a3e0f8b8ae0b5997d3 (diff)
downloadgdbm-4e23fa7b90b56408d480ba8c7556b190757ea2c7.tar.gz
gdbm-4e23fa7b90b56408d480ba8c7556b190757ea2c7.tar.bz2
Bugfix
* src/gdbmdump.c (_gdbm_dump_ascii): Clear the GDBM_ITEM_NOT_FOUND error. * src/gdbmexp.c (gdbm_export_to_file): Likewise. * NEWS: Update.
Diffstat (limited to 'src') (more/less context) (ignore whitespace changes)
-rw-r--r--src/gdbmdump.c20
-rw-r--r--src/gdbmexp.c7
2 files changed, 19 insertions, 8 deletions
diff --git a/src/gdbmdump.c b/src/gdbmdump.c
index daf6a43..2e6f5b0 100644
--- a/src/gdbmdump.c
+++ b/src/gdbmdump.c
@@ -112,17 +112,23 @@ _gdbm_dump_ascii (GDBM_FILE dbf, FILE *fp)
count++;
}
- if (rc == 0 && (rc = gdbm_last_errno (dbf)) == 0)
+ /* FIXME: Something like that won't hurt, although load does not
+ use it currently. */
+ fprintf (fp, "#:count=%lu\n", (unsigned long) count);
+ fprintf (fp, "# End of data\n");
+
+ if (rc == 0)
{
-
- /* FIXME: Something like that won't hurt, although load does not
- use it currently. */
- fprintf (fp, "#:count=%lu\n", (unsigned long) count);
- fprintf (fp, "# End of data\n");
+ rc = gdbm_last_errno (dbf);
+ if (rc == GDBM_ITEM_NOT_FOUND)
+ {
+ gdbm_clear_error (dbf);
+ gdbm_errno = GDBM_NO_ERROR;
+ rc = 0;
+ }
}
free (buffer);
-
return rc ? -1 : 0;
}
diff --git a/src/gdbmexp.c b/src/gdbmexp.c
index 25ad5b2..56a792a 100644
--- a/src/gdbmexp.c
+++ b/src/gdbmexp.c
@@ -83,7 +83,12 @@ gdbm_export_to_file (GDBM_FILE dbf, FILE *fp)
count++;
}
- if (gdbm_errno != GDBM_ITEM_NOT_FOUND)
+ if (gdbm_last_errno (dbf) == GDBM_ITEM_NOT_FOUND)
+ {
+ gdbm_clear_error (dbf);
+ gdbm_errno = GDBM_NO_ERROR;
+ }
+ else
return -1;
return count;

Return to:

Send suggestions and report system problems to the System administrator.