summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog3
-rw-r--r--Src/Modules/db_gdbm.c7
2 files changed, 9 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 8c79cd02e..859082dc8 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
2008-07-21 Clint Adams <clint@zsh.org>
+ * 25321: Src/Modules/db_gdbm.c: delete gdbm node when
+ corresponding hash entry is unset.
+
* 25320: Src/Modules/db_gdbm.c: fix read and write of elements
by key.
diff --git a/Src/Modules/db_gdbm.c b/Src/Modules/db_gdbm.c
index d8f6724ea..ce7a6f57e 100644
--- a/Src/Modules/db_gdbm.c
+++ b/Src/Modules/db_gdbm.c
@@ -132,7 +132,6 @@ gdbmsetfn(Param pm, char **val)
datum key, content;
int ret;
-
key.dptr = pm->node.nam;
key.dsize = strlen(key.dptr) + 1;
content.dptr = val;
@@ -145,7 +144,13 @@ gdbmsetfn(Param pm, char **val)
static void
gdbmunsetfn(Param pm, int um)
{
+ datum key;
+ int ret;
+
+ key.dptr = pm->node.nam;
+ key.dsize = strlen(key.dptr) + 1;
+ ret = gdbm_delete(dbf, key);
}
/**/