diff options
Diffstat (limited to 'miscutils/bc.c')
-rw-r--r-- | miscutils/bc.c | 25 |
1 files changed, 14 insertions, 11 deletions
diff --git a/miscutils/bc.c b/miscutils/bc.c index dd01f5409..ecd19cb0b 100644 --- a/miscutils/bc.c +++ b/miscutils/bc.c | |||
@@ -3090,24 +3090,27 @@ static BcStatus bc_lex_comment(BcLex *l) | |||
3090 | { | 3090 | { |
3091 | size_t i, nls = 0; | 3091 | size_t i, nls = 0; |
3092 | const char *buf = l->buf; | 3092 | const char *buf = l->buf; |
3093 | bool end = false; | ||
3094 | char c; | ||
3095 | 3093 | ||
3096 | l->t.t = BC_LEX_WHITESPACE; | 3094 | l->t.t = BC_LEX_WHITESPACE; |
3097 | 3095 | i = ++l->i; | |
3098 | for (i = ++l->i; !end; i += !end) { | 3096 | for (;;) { |
3099 | 3097 | char c = buf[i]; | |
3100 | for (c = buf[i]; c != '*' && c != 0; c = buf[++i]) nls += (c == '\n'); | 3098 | check_star: |
3101 | 3099 | if (c == '*') { | |
3102 | if (c == 0 || buf[i + 1] == '\0') { | 3100 | c = buf[++i]; |
3101 | if (c == '/') | ||
3102 | break; | ||
3103 | goto check_star; | ||
3104 | } | ||
3105 | if (c == '\0') { | ||
3103 | l->i = i; | 3106 | l->i = i; |
3104 | return BC_STATUS_LEX_NO_COMMENT_END; | 3107 | return BC_STATUS_LEX_NO_COMMENT_END; |
3105 | } | 3108 | } |
3106 | 3109 | nls += (c == '\n'); | |
3107 | end = buf[i + 1] == '/'; | 3110 | i++; |
3108 | } | 3111 | } |
3109 | 3112 | ||
3110 | l->i = i + 2; | 3113 | l->i = i + 1; |
3111 | l->line += nls; | 3114 | l->line += nls; |
3112 | 3115 | ||
3113 | return BC_STATUS_SUCCESS; | 3116 | return BC_STATUS_SUCCESS; |