hush: fix "cmd & <newline>" problem

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
diff --git a/shell/hush.c b/shell/hush.c
index 6970c50..3581ba1 100644
--- a/shell/hush.c
+++ b/shell/hush.c
@@ -4141,15 +4141,26 @@
 				 && dest.length == 0 && !dest.has_quoted_part
 				) {
 					/* This newline can be ignored. But...
-					 * without the below check, interactive shell
-					 * will ignore even lines with bare <newline>,
-					 * and show the continuation prompt:
+					 * Without check #1, interactive shell
+					 * ignores even bare <newline>,
+					 * and shows the continuation prompt:
 					 * ps1_prompt$ <enter>
-					 * ps2> _   <=== wrong prompt, should be ps1
+					 * ps2> _   <=== wrong, should be ps1
+					 * Without check #2, "cmd & <newline>"
+					 * is similarly mistreated.
+					 * (BTW, this makes "cmd & cmd"
+					 * and "cmd && cmd" non-orthogonal.
+					 * Really, ask yourself, why
+					 * "cmd && <newline>" doesn't start
+					 * cmd but waits for more input?
+					 * No reason...)
 					 */
 					struct pipe *pi = ctx.list_head;
-					if (pi->num_cmds != 0)
+					if (pi->num_cmds != 0       /* check #1 */
+					 && pi->followup != PIPE_BG /* check #2 */
+					) {
 						continue;
+					}
 				}
 				/* Treat newline as a command separator. */
 				done_pipe(&ctx, PIPE_SEQ);