From 59403ac7f2a2d2ef299a906e23490e9b8130e9d8 Mon Sep 17 00:00:00 2001 From: Ilmir Usmanov Date: Fri, 1 Aug 2014 15:49:35 +0400 Subject: [PATCH] Parse empty files correctly --- src/libjsparser/lexer.c | 3 ++- src/libjsparser/parser.c | 7 ++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/libjsparser/lexer.c b/src/libjsparser/lexer.c index 91e3985d9..3550d8249 100644 --- a/src/libjsparser/lexer.c +++ b/src/libjsparser/lexer.c @@ -56,7 +56,8 @@ static const char *token_start; static char get_char (size_t i) { - JERRY_ASSERT ((buffer + i) < (buffer_start + buffer_size)); + if ((buffer + i) >= (buffer_start + buffer_size)) + return '\0'; return *(buffer + i); } diff --git a/src/libjsparser/parser.c b/src/libjsparser/parser.c index 01355e501..082fb8f22 100644 --- a/src/libjsparser/parser.c +++ b/src/libjsparser/parser.c @@ -1818,7 +1818,12 @@ parse_source_element_list (void) skip_newlines (); } lexer_save_token (tok); - REWRITE_OPCODE (reg_var_decl_loc, reg_var_decl, min_temp_name, (uint8_t) (max_temp_name - 1)); + if (max_temp_name > min_temp_name) + REWRITE_OPCODE (reg_var_decl_loc, reg_var_decl, min_temp_name, (uint8_t) (max_temp_name - 1)); + else if (max_temp_name == min_temp_name) + REWRITE_OPCODE (reg_var_decl_loc, reg_var_decl, min_temp_name, max_temp_name); + else + JERRY_UNREACHABLE (); finish_scope (); optimizer_reorder_scope ((uint16_t) (reg_var_decl_loc + 1), opcode_counter); }