summaryrefslogtreecommitdiffhomepage
path: root/miscutils
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2018-12-13 17:36:41 +0100
committerDenys Vlasenko <vda.linux@googlemail.com>2018-12-13 17:36:41 +0100
commit7dc0a51286b7898fcc17033dce1f1856e78494b4 (patch)
treed18bc300437422a9bd56871a1f42a69a717c25a9 /miscutils
parent40534bb6e2910a931ae77f0275b048f62896e2a7 (diff)
bc: further zbc_vm_stdin() optimizations
function old new delta bc_vm_run 534 514 -20 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'miscutils')
-rw-r--r--miscutils/bc.c17
1 files changed, 7 insertions, 10 deletions
diff --git a/miscutils/bc.c b/miscutils/bc.c
index 7ab320a4d..9c7e69fc1 100644
--- a/miscutils/bc.c
+++ b/miscutils/bc.c
@@ -7072,11 +7072,9 @@ static BC_STATUS zbc_vm_stdin(void)
else if (buf.v[0] == G.sbgn)
str += 1;
} else {
- size_t i;
- for (i = 0; i < len; ++i) {
- char c = string[i];
-
- if (i - 1 > len || string[i - 1] != '\\') {
+ while (*string) {
+ char c = *string;
+ if (string != buf.v && string[-1] != '\\') {
// checking applet type is cheaper than accessing sbgn/send
if (IS_DC) // dc: sbgn = send = '"'
str ^= (c == '"');
@@ -7087,16 +7085,15 @@ static BC_STATUS zbc_vm_stdin(void)
str += 1;
}
}
-
- if (c == '/' && !comment && string[i + 1] == '*') {
+ string++;
+ if (c == '/' && *string == '*') {
comment = true;
break;
}
- else if (c == '*' && comment && string[i + 1] == '/')
+ if (c == '*' && *string == '/')
comment = false;
}
-
- if (str || comment || string[len - 2] == '\\') {
+ if (str || comment || string[-2] == '\\') {
bc_vec_concat(&buffer, buf.v);
continue;
}