← Commit list

3227d3f98

Denys Vlasenko
Denys Vlasenko
2010-05-17
FAILED Duration: 27s

Subject

hush: fix hush-bugs/parse_err.tests

Binary

No binary (build failed)

Architecture & Compiler Flags

Architecture: x86_64-linux-gnu Compiler: gcc (Ubuntu 11.4.0-1ubuntu1~22.04.3) 11.4.0

—

Build Log

(log yok)

Commit Diff GitHub →

shell/hush.c+9 -4
@@ -6232,10 +6232,15 @@ static struct pipe *parse_stream(char **pstring,
is_special = "{}<>;&|()#'" /* special outside of "str" */
"\\$\"" IF_HUSH_TICK("`"); /* always special */
/* Are { and } special here? */
- if (ctx.command->argv /* word [word]{... */
- || dest.length /* word{... */
- || dest.o_quoted /* ""{... */
- || (next != ';' && next != ')' && !strchr(G.ifs, next)) /* {word */
+ if (ctx.command->argv /* word [word]{... - non-special */
+ || dest.length /* word{... - non-special */
+ || dest.o_quoted /* ""{... - non-special */
+ || (next != ';' /* }; - special */
+ && next != ')' /* }) - special */
+ && next != '&' /* }& and }&& ... - special */
+ && next != '|' /* }|| ... - special */
+ && !strchr(G.ifs, next) /* {word - non-special */
+ )
) {
/* They are not special, skip "{}" */
is_special += 2;
shell/hush_test/hush-bugs/parse_err.tests+0 -3
@@ -1,3 +0,0 @@
-# Bug happens only if there is no space in "}&"
-{ trap "echo got TERM" TERM; sleep 3; }& sleep 1; kill $!; wait
-echo Done: $?
?+0 -0
shell/hush_test/hush-parsing/group2.tests+3 -0
@@ -0,0 +1,3 @@
+# Bug was in handling of "}&" without space
+{ trap "echo got TERM" TERM; sleep 2; }& sleep 1; kill $!; wait
+echo Done: $?