diff options
author | Peter Stephenson <p.stephenson@samsung.com> | 2019-12-12 10:47:00 +0000 |
---|---|---|
committer | Peter Stephenson <p.stephenson@samsung.com> | 2019-12-12 10:47:00 +0000 |
commit | cb4dc956439140ca595b2b7dfd511efaa22d1e22 (patch) | |
tree | 570c922210981e141d0082de55f9147cb43387f4 /Src/builtin.c | |
parent | 273d669a568ed9ee705916e42945f4239501cdcb (diff) | |
download | zsh-cb4dc956439140ca595b2b7dfd511efaa22d1e22.tar.gz zsh-cb4dc956439140ca595b2b7dfd511efaa22d1e22.tar.xz zsh-cb4dc956439140ca595b2b7dfd511efaa22d1e22.zip |
45009: POSIX_CD needs to suppress some forms of option.
Otherwise forms of argument allowed by POSIX are interpreted as options instead.
Diffstat (limited to 'Src/builtin.c')
-rw-r--r-- | Src/builtin.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/Src/builtin.c b/Src/builtin.c index bd7736d2c..7bf4281da 100644 --- a/Src/builtin.c +++ b/Src/builtin.c @@ -912,7 +912,7 @@ cd_get_dest(char *nam, char **argv, int hard, int func) char *end; doprintdir++; - if (argv[0][1] && (argv[0][0] == '+' || argv[0][0] == '-') + if (!isset(POSIXCD) && argv[0][1] && (argv[0][0] == '+' || argv[0][0] == '-') && strspn(argv[0]+1, "0123456789") == strlen(argv[0]+1)) { dd = zstrtol(argv[0] + 1, &end, 10); if (*end == '\0') { |