bc: optimize zbc_lex_string()

function                                             old     new   delta
zbc_lex_next                                        2359    2353      -6

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Denys Vlasenko 2018-12-18 14:03:20 +01:00
parent ef271da33f
commit 07597cd35d

View File

@ -2986,17 +2986,22 @@ static BC_STATUS zbc_lex_identifier(BcLex *l)
static BC_STATUS zbc_lex_string(BcLex *l) static BC_STATUS zbc_lex_string(BcLex *l)
{ {
size_t len, nls = 0, i = l->i; size_t len, nls, i;
char c;
l->t.t = BC_LEX_STR; 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'); nls += (c == '\n');
i++;
if (c == '\0') {
l->i = i;
RETURN_STATUS(bc_error("string end could not be found"));
} }
len = i - l->i; len = i - l->i;