diff options
author | Barton E. Schaefer <schaefer@zsh.org> | 2017-03-11 14:39:17 -0800 |
---|---|---|
committer | Barton E. Schaefer <schaefer@zsh.org> | 2017-03-11 14:40:12 -0800 |
commit | 420fc41b7cccab7f1ee07abab2cb7c72501cf91e (patch) | |
tree | 252077047003913b490cbaf253c34cc74fce8a59 /Src | |
parent | 5da6621ffe4047358bbcd4f5ee0e3a118e65de73 (diff) | |
download | zsh-420fc41b7cccab7f1ee07abab2cb7c72501cf91e.tar.gz zsh-420fc41b7cccab7f1ee07abab2cb7c72501cf91e.tar.xz zsh-420fc41b7cccab7f1ee07abab2cb7c72501cf91e.zip |
40832: fix $x:P when PWD=/
Diffstat (limited to 'Src')
-rw-r--r-- | Src/subst.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/Src/subst.c b/Src/subst.c index 2214b3d4f..e639c96a8 100644 --- a/Src/subst.c +++ b/Src/subst.c @@ -4336,7 +4336,11 @@ modify(char **str, char **ptr) break; case 'P': if (*copy != '/') { - copy = zhtricat(metafy(zgetcwd(), -1, META_HEAPDUP), "/", copy); + char *here = zgetcwd(); + if (here[strlen(here)-1] != '/') + copy = zhtricat(metafy(here, -1, META_HEAPDUP), "/", copy); + else + copy = dyncat(here, copy); } copy = xsymlink(copy, 1); break; @@ -4418,7 +4422,11 @@ modify(char **str, char **ptr) break; case 'P': if (**str != '/') { - *str = zhtricat(metafy(zgetcwd(), -1, META_HEAPDUP), "/", *str); + char *here = zgetcwd(); + if (here[strlen(here)-1] != '/') + *str = zhtricat(metafy(here, -1, META_HEAPDUP), "/", *str); + else + *str = dyncat(here, *str); } *str = xsymlink(*str, 1); break; |