summaryrefslogtreecommitdiff
path: root/Src
diff options
context:
space:
mode:
Diffstat (limited to 'Src')
-rw-r--r--Src/subst.c8
-rw-r--r--Src/utils.c6
2 files changed, 9 insertions, 5 deletions
diff --git a/Src/subst.c b/Src/subst.c
index df60a27ab..d76215838 100644
--- a/Src/subst.c
+++ b/Src/subst.c
@@ -2738,8 +2738,8 @@ paramsubst(LinkList l, LinkNode n, char **str, int qt, int ssub)
char *tmps;
unmetafy(*ap, &len);
untokenize(*ap);
- tmps = unmetafy(promptexpand(metafy(*ap, len, META_NOALLOC),
- 0, NULL, NULL, NULL), &len);
+ tmps = promptexpand(metafy(*ap, len, META_NOALLOC),
+ 0, NULL, NULL, NULL);
*ap = dupstring(tmps);
free(tmps);
}
@@ -2749,8 +2749,8 @@ paramsubst(LinkList l, LinkNode n, char **str, int qt, int ssub)
val = dupstring(val), copied = 1;
unmetafy(val, &len);
untokenize(val);
- tmps = unmetafy(promptexpand(metafy(val, len, META_NOALLOC),
- 0, NULL, NULL, NULL), &len);
+ tmps = promptexpand(metafy(val, len, META_NOALLOC),
+ 0, NULL, NULL, NULL);
val = dupstring(tmps);
free(tmps);
}
diff --git a/Src/utils.c b/Src/utils.c
index 1dd8c3577..550f7bfa7 100644
--- a/Src/utils.c
+++ b/Src/utils.c
@@ -857,7 +857,9 @@ finddir(char *s)
scanhashtable(nameddirtab, 0, 0, 0, finddir_scan, 0);
if (func) {
- char **ares = subst_string_by_func(func, "d", finddir_full);
+ char *dir_meta = metafy(finddir_full, strlen(finddir_full),
+ META_ALLOC);
+ char **ares = subst_string_by_func(func, "d", dir_meta);
int len;
if (ares && arrlen(ares) >= 2 &&
(len = (int)zstrtol(ares[1], NULL, 10)) > finddir_best) {
@@ -868,6 +870,8 @@ finddir(char *s)
finddir_last->diff = len - strlen(finddir_last->node.nam);
finddir_best = len;
}
+ if (dir_meta != finddir_full)
+ zsfree(dir_meta);
}
return finddir_last;