According to POSIX.1-2008 we should remove newlines only at the end of
the substitution. Newlines-only substitions causes dash to remove
newlines before beggining of the substitution. The following code:
cat <<END
1
$(echo "")
2
END
prints "1<newline>2" instead of expected "1<newline><newline>2".
This patch fixes trailing newlines processing in backquote expanding.
Signed-off-by: Nikolai Merinov <[email protected]>
---
src/expand.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/expand.c b/src/expand.c
index af9cac9..1b1f95e 100644
--- a/src/expand.c
+++ b/src/expand.c
@@ -525,7 +525,7 @@ read:
/* Eat all trailing newlines */
dest = expdest;
- for (; dest > (char *)stackblock() && dest[-1] == '\n';)
+ for (; dest > ((char *)stackblock() + startloc) && dest[-1] == '\n';)
STUNPUTC(dest);
expdest = dest;
--
2.17.1