about summary refs log tree commit diff
path: root/Src/Zle/zle_misc.c
diff options
context:
space:
mode:
Diffstat (limited to 'Src/Zle/zle_misc.c')
-rw-r--r--Src/Zle/zle_misc.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/Src/Zle/zle_misc.c b/Src/Zle/zle_misc.c
index e24d0c08b..592a590b5 100644
--- a/Src/Zle/zle_misc.c
+++ b/Src/Zle/zle_misc.c
@@ -669,7 +669,7 @@ executenamedcommand(char *prmt)
     int len, l = strlen(prmt), feep = 0, listed = 0, curlist = 0;
     int ols = (listshown && validlist), olll = lastlistlen;
     char *ptr;
-    char *okeymap = curkeymapname;
+    char *okeymap = ztrdup(curkeymapname);
 
     clearlist = 1;
     cmdbuf = zhalloc(l + NAMLEN + 2);
@@ -685,6 +685,7 @@ executenamedcommand(char *prmt)
 	if (!(cmd = getkeycmd()) || cmd == Th(z_sendbreak)) {
 	    statusline = NULL;
 	    selectkeymap(okeymap, 1);
+	    zsfree(okeymap);
 	    if ((listshown = ols)) {
 		showinglist = -2;
 		lastlistlen = olll;
@@ -752,6 +753,7 @@ executenamedcommand(char *prmt)
 		    unrefthingy(r);
 		    statusline = NULL;
 		    selectkeymap(okeymap, 1);
+		    zsfree(okeymap);
 		    if ((listshown = ols)) {
 			showinglist = -2;
 			lastlistlen = olll;