--- subst.c 2006-02-13 09:53:12.000000000 -0800 +++ subst.c 2006-02-13 10:50:52.000000000 -0800 @@ -2040,6 +2040,7 @@ /* Fall Through! */ case '-': if (vunset) { + int ws = opts[SHWORDSPLIT]; val = dupstring(s); /* If word-splitting is enabled, we ask multsub() to split * the substituted string at unquoted whitespace. Then, we @@ -2048,7 +2049,9 @@ * keep its array splits, and weird constructs such as * ${str+"one two" "3 2 1" foo "$str"} to only be split * at the unquoted spaces. */ + opts[SHWORDSPLIT] = spbreak; multsub(&val, spbreak && !aspar, (aspar ? NULL : &aval), &isarr, NULL); + opts[SHWORDSPLIT] = ws; copied = 1; spbreak = 0; }