[git commit] bc: optimize zbc_lex_string()

Denys Vlasenko vda.linux at googlemail.com
Tue Dec 18 13:03:20 UTC 2018


commit: https://git.busybox.net/busybox/commit/?id=07597cd35dfbdc7597d3b2b8ecf797016a996576
branch: https://git.busybox.net/busybox/commit/?id=refs/heads/master

function                                             old     new   delta
zbc_lex_next                                        2359    2353      -6

Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
---
 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;


More information about the busybox-cvs mailing list