← Commit list

52caa007e

Denys Vlasenko
Denys Vlasenko
2018-12-21
SUCCESS Duration: 151s

Subject

bc: for(;;) fix from upstream

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 →

miscutils/bc.c+7 -1
@@ -4205,8 +4205,14 @@ static BC_STATUS zbc_parse_for(BcParse *p)
if (p->l.t.t != BC_LEX_SCOLON)
s = zbc_parse_expr(p, BC_PARSE_REL);
- else
+ else {
+ // Set this for the next call to bc_parse_number.
+ // This is safe to set because the current token is a semicolon,
+ // which has no string requirement.
+ bc_vec_string(&p->l.t.v, 1, "1");
+ bc_parse_pushNUM(p);
s = bc_POSIX_does_not_allow_empty_X_expression_in_for("condition");
+ }
if (s) RETURN_STATUS(s);
if (p->l.t.t != BC_LEX_SCOLON) RETURN_STATUS(bc_error_bad_token());
testsuite/bc.tests+5 -0
@@ -51,6 +51,11 @@ testing "bc if 0 else if 1" \
"2\n9\n" \
"" "if (0) 1 else if (1) 2; 9"
+testing "bc for(;;)" \
+ "bc" \
+ "2\n3\n2\n9\n" \
+ "" "i=2; for (;;) { 2; if(--i==0) break; 3; }; 9"
+
testing "bc define auto" \
"bc" \
"8\n9\n" \