From 07597cd35dfbdc7597d3b2b8ecf797016a996576 Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Tue, 18 Dec 2018 14:03:20 +0100 Subject: [PATCH] bc: optimize zbc_lex_string() function old new delta zbc_lex_next 2359 2353 -6 Signed-off-by: Denys Vlasenko --- miscutils/bc.c | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/miscutils/bc.c b/miscutils/bc.c index 5d969c9d0..be198a5fb 100644 --- a/miscutils/bc.c +++ b/miscutils/bc.c @@ -2986,17 +2986,22 @@ static BC_STATUS zbc_lex_identifier(BcLex *l) static BC_STATUS zbc_lex_string(BcLex *l) { - size_t len, nls = 0, i = l->i; - char c; + size_t len, nls, i; l->t.t = BC_LEX_STR; - for (c = l->buf[i]; c != '\0' && c != '"'; c = l->buf[++i]) + nls = 0; + i = l->i; + for (;;) { + char c = l->buf[i]; + if (c == '\0') { + l->i = i; + RETURN_STATUS(bc_error("string end could not be found")); + } + if (c == '"') + break; nls += (c == '\n'); - - if (c == '\0') { - l->i = i; - RETURN_STATUS(bc_error("string end could not be found")); + i++; } len = i - l->i;