From dc2397f7548632910267f31bc1c97d45602453c0 Mon Sep 17 00:00:00 2001 From: Peter Stephenson Date: Mon, 7 Mar 2016 09:44:54 +0000 Subject: users/21352: ensure $'' doesn't get elided. Assign nulstring to it if empty. Test for all forms of quotation marks. --- ChangeLog | 3 +++ Src/subst.c | 6 +++++- Test/A03quoting.ztst | 4 ++++ 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 52299a364..4db9df49b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2016-03-07 Peter Stephenson + * users/21352: Src/subst.c, Test/A03quoting.ztst: use nulstring + to ensure $'' isn't elided. + * 38094: Src/signals.c, Test/C03traps.ztst: POSIX exit traps aren't local so local level should be 0 so they don't get trashed if defined in a function. diff --git a/Src/subst.c b/Src/subst.c index bb1dd8939..f2d0f6553 100644 --- a/Src/subst.c +++ b/Src/subst.c @@ -145,8 +145,12 @@ stringsubstquote(char *strstart, char **pstrdpos) strret = dyncat(strstart, strsub); } else if (strdpos[len]) strret = dyncat(strsub, strdpos + len); - else + else if (*strsub) strret = strsub; + else { + /* This ensures a $'' doesn't get elided. */ + strret = dupstring(nulstring); + } *pstrdpos = strret + (strdpos - strstart) + strlen(strsub); diff --git a/Test/A03quoting.ztst b/Test/A03quoting.ztst index 0cf0e8a02..da3ce359a 100644 --- a/Test/A03quoting.ztst +++ b/Test/A03quoting.ztst @@ -74,3 +74,7 @@ >16#61 >16#62 >16#64 + + () { print $# } '' "" $'' +0:$'' should not be elided, in common with other empty quotes +>3 -- cgit 1.4.1