about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog2
-rw-r--r--Src/params.c7
2 files changed, 8 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 33a0cac28..23b4177c2 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,7 @@
 2005-11-02  Peter Stephenson  <pws@csr.com>
 
+	* 21974: Src/params.c: memory leak with tied parameters.
+
 	* users/9610: Src/Zle/zle_misc.c: Handle digit argument
 	in copy-prev-word and copy-prev-shell-word.
 
diff --git a/Src/params.c b/Src/params.c
index 835c12230..1468c014a 100644
--- a/Src/params.c
+++ b/Src/params.c
@@ -2452,8 +2452,13 @@ stdunsetfn(Param pm, UNUSED(int exp))
 	    	pm->u.str = NULL;
 	    break;
     }
-    if (!(pm->flags & PM_SPECIAL))
+    if ((pm->flags & (PM_SPECIAL|PM_TIED)) == PM_TIED) {
+	if (pm->ename) {
+	    zsfree(pm->ename);
+	    pm->ename = NULL;
+	}
 	pm->flags &= ~PM_TIED;
+    }
     pm->flags |= PM_UNSET;
 }