diff options
author | Herbert Xu <herbert@gondor.apana.org.au> | 2013-08-23 20:04:12 +1000 |
---|---|---|
committer | Ben Hutchings <ben@decadent.org.uk> | 2020-03-28 21:42:54 +0000 |
commit | a4e6b2aab296a5adc38372b157a854eb82054020 (patch) | |
tree | 76b2ac51dea064a1987c880d31feca35d2b29b58 | |
parent | 89742f0fc6f93a4a748ab783856a9d441511b808 (diff) | |
download | klibc-a4e6b2aab296a5adc38372b157a854eb82054020.tar.gz |
[klibc] dash: [EXPAND] Propagate EXP_QPAT in subevalvar
[ dash commit a7c21a6f4cb42d967854cae954efd4ee66bdea9c ]
On Tue, Aug 28, 2012 at 01:27:24PM +0000, Todor Vlaev wrote:
>
> While playing around with parameter expansion I noticed that the
> following didn't work in dash (dash 0.5.5.1-7.4ubuntu1) as compared
> to bash even though I believe it should be POSIX-compliant:
>
> my_str=swan; last_char="${my_str#${my_str%?}}"; echo ${last_char}
>
> If the double quotes are removed, the last character is printed correctly.
>
> At a quick glance through the commits after the 0.5.5.1 release I saw
> the following bug fix. Could it be related?
>
> 0d7d66039b614b642c775432fd64aa8c11f9a64d
> [EXPAND] Fix quoted pattern patch breakage
We need to propagate EXP_QPAT in subevalvar as otherwise a nested
parameter expansion within subevalvar may be expanded incorrectly.
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
-rw-r--r-- | usr/dash/expand.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/usr/dash/expand.c b/usr/dash/expand.c index 355e924e87ed0..c4d5260663ad5 100644 --- a/usr/dash/expand.c +++ b/usr/dash/expand.c @@ -650,7 +650,8 @@ subevalvar(char *p, char *str, int strloc, int subtype, int startloc, int varfla char *(*scan)(char *, char *, char *, char *, int , int); argstr(p, EXP_TILDE | (subtype != VSASSIGN && subtype != VSQUESTION ? - (flag & EXP_QUOTED ? EXP_QPAT : EXP_CASE) : 0)); + (flag & (EXP_QUOTED | EXP_QPAT) ? + EXP_QPAT : EXP_CASE) : 0)); STPUTC('\0', expdest); argbackq = saveargbackq; startp = stackblock() + startloc; |