From da5b058d1d7d4754b6f45b99d2eadbd1ff3778f8 Mon Sep 17 00:00:00 2001 From: jilles Date: Thu, 16 Dec 2010 23:28:20 +0000 Subject: sh: Fix corruption of command substitutions with special chars after newline The CTLESC byte to protect a special character was output before instead of after a newline directly preceding the special character. The special handling of newlines is because command substitutions discard all trailing newlines. --- bin/sh/expand.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'bin/sh') diff --git a/bin/sh/expand.c b/bin/sh/expand.c index 1693a0b..354d5e9 100644 --- a/bin/sh/expand.c +++ b/bin/sh/expand.c @@ -499,8 +499,6 @@ expbackq(union node *cmd, int quoted, int flag) } lastc = *p++; if (lastc != '\0') { - if (quotes && syntax[(int)lastc] == CCTL) - STPUTC(CTLESC, dest); if (lastc == '\n') { nnl++; } else { @@ -508,6 +506,8 @@ expbackq(union node *cmd, int quoted, int flag) nnl--; STPUTC('\n', dest); } + if (quotes && syntax[(int)lastc] == CCTL) + STPUTC(CTLESC, dest); STPUTC(lastc, dest); } } -- cgit v1.1