From 8348b3fb25b626c10d86026b075d5722ab7baab1 Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Sat, 2 Jul 2022 15:48:48 +0200 Subject: [PATCH] Fix Berry lexer regression --- lib/libesp32/berry/src/be_lexer.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/libesp32/berry/src/be_lexer.c b/lib/libesp32/berry/src/be_lexer.c index dab6da922..cc3f1068e 100644 --- a/lib/libesp32/berry/src/be_lexer.c +++ b/lib/libesp32/berry/src/be_lexer.c @@ -336,7 +336,11 @@ static btokentype scan_decimal(blexer *lexer) { btokentype type = TokenInteger; match(lexer, is_digit); - if (decimal_dots(lexer) || scan_realexp(lexer)) { + /* decimal_dots() and scan_realexp() have side effect, so we call each explicitly */ + /* to prevent binary shortcut if the first is true */ + bbool has_decimal_dots = decimal_dots(lexer); + bbool is_realexp = scan_realexp(lexer); + if (has_decimal_dots || is_realexp) { type = TokenReal; } lexer->buf.s[lexer->buf.len] = '\0';