← Commit list

818b602c8

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

Subject

bc: fix another thinko

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 -3
@@ -7059,22 +7059,21 @@ static BC_STATUS zbc_vm_stdin(void)
str = 0;
for (;;) {
size_t len;
- char *string;
bc_read_line(&buf);
len = buf.len - 1;
if (len == 0) // "" buf means EOF
break;
- string = buf.v;
if (len == 1) {
if (str && buf.v[0] == G.send)
str -= 1;
else if (buf.v[0] == G.sbgn)
str += 1;
} else {
+ char *string = buf.v;
while (*string) {
char c = *string;
- if (string != buf.v && string[-1] != '\\') {
+ if (string == buf.v || string[-1] != '\\') {
// checking applet type is cheaper than accessing sbgn/send
if (IS_BC) // bc: sbgn = send = '"'
str ^= (c == '"');
testsuite/bc.tests+10 -0
@@ -16,6 +16,16 @@ testing "bc comment 2: /*/ is not a closed comment" \
"4\n" \
"" "1 /*/ + 2 */ + 3"
+testing "bc backslash 1" \
+ "bc" \
+ "3\n" \
+ "" "1 \\\\\n + 2"
+
+testing "bc string 1" \
+ "bc" \
+ "STR\n" \
+ "" "\"STR\n\""
+
tar xJf bc_large.tar.xz
for f in bc*.bc; do