bc: simplify bc_lex_comment()
authorDenys Vlasenko <vda.linux@googlemail.com>
Mon, 3 Dec 2018 18:12:29 +0000 (19:12 +0100)
committerDenys Vlasenko <vda.linux@googlemail.com>
Wed, 5 Dec 2018 14:43:35 +0000 (15:43 +0100)
function                                             old     new   delta
bc_lex_token                                        1369    1344     -25

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
miscutils/bc.c

index dd01f540979cb1ea5dea6dd8f7a27feaec2549b5..ecd19cb0b1ac29770c8e1ee7b76af08ed302a8e7 100644 (file)
@@ -3090,24 +3090,27 @@ static BcStatus bc_lex_comment(BcLex *l)
 {
        size_t i, nls = 0;
        const char *buf = l->buf;
-       bool end = false;
-       char c;
 
        l->t.t = BC_LEX_WHITESPACE;
-
-       for (i = ++l->i; !end; i += !end) {
-
-               for (c = buf[i]; c != '*' && c != 0; c = buf[++i]) nls += (c == '\n');
-
-               if (c == 0 || buf[i + 1] == '\0') {
+       i = ++l->i;
+       for (;;) {
+               char c = buf[i];
+ check_star:
+               if (c == '*') {
+                       c = buf[++i];
+                       if (c == '/')
+                               break;
+                       goto check_star;
+               }
+               if (c == '\0') {
                        l->i = i;
                        return BC_STATUS_LEX_NO_COMMENT_END;
                }
-
-               end = buf[i + 1] == '/';
+               nls += (c == '\n');
+               i++;
        }
 
-       l->i = i + 2;
+       l->i = i + 1;
        l->line += nls;
 
        return BC_STATUS_SUCCESS;