aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--miscutils/bc.c7
-rwxr-xr-xtestsuite/bc.tests12
2 files changed, 17 insertions, 2 deletions
diff --git a/miscutils/bc.c b/miscutils/bc.c
index 9c7e69fc1..dc9a7da8e 100644
--- a/miscutils/bc.c
+++ b/miscutils/bc.c
@@ -7088,10 +7088,13 @@ static BC_STATUS zbc_vm_stdin(void)
string++;
if (c == '/' && *string == '*') {
comment = true;
- break;
+ string++;
+ continue;
}
- if (c == '*' && *string == '/')
+ if (c == '*' && *string == '/') {
comment = false;
+ string++;
+ }
}
if (str || comment || string[-2] == '\\') {
bc_vec_concat(&buffer, buf.v);
diff --git a/testsuite/bc.tests b/testsuite/bc.tests
index 32460092b..4f0d50f73 100755
--- a/testsuite/bc.tests
+++ b/testsuite/bc.tests
@@ -4,6 +4,18 @@
. ./testing.sh
+# testing "test name" "command" "expected result" "file input" "stdin"
+
+testing "bc comment 1" \
+ "bc" \
+ "3\n" \
+ "" "1 /* comment */ + 2"
+
+testing "bc comment 2: /*/ is not a closed comment" \
+ "bc" \
+ "4\n" \
+ "" "1 /*/ + 2 */ + 3"
+
tar xJf bc_large.tar.xz
for f in bc*.bc; do