summaryrefslogtreecommitdiffabout
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) (unidiff)
tree7763d0dee3681c0a733a490feaf6dbdcf54e3f8d
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 (more/less context) (ignore whitespace changes)
-rw-r--r--NEWS9
-rw-r--r--src/gdbmdump.c20
-rw-r--r--src/gdbmexp.c7
3 files changed, 26 insertions, 10 deletions
diff --git a/NEWS b/NEWS
index b883bc7..1ca9a32 100644
--- a/NEWS
+++ b/NEWS
@@ -1,4 +1,4 @@
1GNU dbm NEWS -- history of user-visible changes. 2018-07-30 1GNU dbm NEWS -- history of user-visible changes. 2018-08-12
2Copyright (C) 1990-2018 Free Software Foundation, Inc. 2Copyright (C) 1990-2018 Free Software Foundation, Inc.
3See the end of file for copying conditions. 3See the end of file for copying conditions.
4 4
@@ -11,6 +11,11 @@ Version 1.17 - 2018-07-30
11Both functions now return 0 on success. On error, they return -1 11Both functions now return 0 on success. On error, they return -1
12and set gdbm_errno and errno to the appropriate error codes. 12and set gdbm_errno and errno to the appropriate error codes.
13 13
14* Fix bug in gdbm_dump function
15
16The function did not clear the GDBM_ITEM_NOT_FOUND error marker, which
17is set upon its normal termination.
18
14 19
15Version 1.16 - 2018-06-27 20Version 1.16 - 2018-06-27
16 21
@@ -484,7 +489,7 @@ Copyright (C) 1990-2017 Free Software Foundation, Inc.
484Local variables: 489Local variables:
485mode: outline 490mode: outline
486 paragraph-separate: "[ ]*$" 491 paragraph-separate: "[ ]*$"
487eval: (add-hook 'write-file-hooks 'time-stamp) 492eval: (add-hook 'write-file-functions 'time-stamp)
488time-stamp-start: "changes. " 493time-stamp-start: "changes. "
489time-stamp-format: "%:y-%02m-%02d" 494time-stamp-format: "%:y-%02m-%02d"
490time-stamp-end: "\n" 495time-stamp-end: "\n"
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)
112 count++; 112 count++;
113 } 113 }
114 114
115 if (rc == 0 && (rc = gdbm_last_errno (dbf)) == 0) 115 /* FIXME: Something like that won't hurt, although load does not
116 use it currently. */
117 fprintf (fp, "#:count=%lu\n", (unsigned long) count);
118 fprintf (fp, "# End of data\n");
119
120 if (rc == 0)
116 { 121 {
117 122 rc = gdbm_last_errno (dbf);
118 /* FIXME: Something like that won't hurt, although load does not 123 if (rc == GDBM_ITEM_NOT_FOUND)
119 use it currently. */ 124 {
120 fprintf (fp, "#:count=%lu\n", (unsigned long) count); 125 gdbm_clear_error (dbf);
121 fprintf (fp, "# End of data\n"); 126 gdbm_errno = GDBM_NO_ERROR;
127 rc = 0;
128 }
122 } 129 }
123 free (buffer); 130 free (buffer);
124 131
125
126 return rc ? -1 : 0; 132 return rc ? -1 : 0;
127} 133}
128 134
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)
83 83
84 count++; 84 count++;
85 } 85 }
86 if (gdbm_errno != GDBM_ITEM_NOT_FOUND) 86 if (gdbm_last_errno (dbf) == GDBM_ITEM_NOT_FOUND)
87 {
88 gdbm_clear_error (dbf);
89 gdbm_errno = GDBM_NO_ERROR;
90 }
91 else
87 return -1; 92 return -1;
88 93
89 return count; 94 return count;

Return to:

Send suggestions and report system problems to the System administrator.