← Commit list

5acd14ba5

Denys Vlasenko
Denys Vlasenko
2018-12-20
SUCCESS Duration: 150s

Subject

bc: fix keyword matching to not think "ifz" is the "if" keyword

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+2 -0
@@ -2950,6 +2950,8 @@ static BC_STATUS zbc_lex_identifier(BcLex *l)
continue;
match:
// buf starts with keyword bc_lex_kws[i]
+ if (isalnum(buf[j]) || buf[j]=='_')
+ continue; // "ifz" does not match "if" keyword, "if." does
l->t.t = BC_LEX_KEY_1st_keyword + i;
if (!bc_lex_kws_POSIX(i)) {
s = bc_posix_error_fmt("%sthe '%.8s' keyword", "POSIX does not allow ", bc_lex_kws[i].name8);
testsuite/bc.tests+5 -0
@@ -76,6 +76,11 @@ testing "bc while(cond)<NL>" \
"8\n7\n6\n5\n4\n3\n2\n1\n9\n" \
"" "i=9;while(--i)\ni\n9"
+testing "bc ifz does not match if keyword" \
+ "bc" \
+ "1\n2\n2\n3\n" \
+ "" "ifz=1;ifz\n++ifz;ifz++\nifz"
+
testing "bc print 1,2,3" \
"bc" \
"123" \