about summary refs log tree commit diff
path: root/Src
diff options
context:
space:
mode:
authorBarton E. Schaefer <schaefer@zsh.org>2017-03-11 14:39:17 -0800
committerBarton E. Schaefer <schaefer@zsh.org>2017-03-11 14:40:12 -0800
commit420fc41b7cccab7f1ee07abab2cb7c72501cf91e (patch)
tree252077047003913b490cbaf253c34cc74fce8a59 /Src
parent5da6621ffe4047358bbcd4f5ee0e3a118e65de73 (diff)
downloadzsh-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.c12
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;