From 29b337d159c942b993e0a5acb6a6803c2433a233 Mon Sep 17 00:00:00 2001 From: Roland Takacs Date: Tue, 6 Mar 2018 08:22:22 +0100 Subject: [PATCH] Eliminate early memory deallocations in case of NuttX and TizenRT (#2235) The error value is released in the print_unhandled_exception function, however that value is used and released later. This patch fixes this bug. JerryScript-DCO-1.0-Signed-off-by: Roland Takacs rtakacs.uszeged@partner.samsung.com --- targets/nuttx-stm32f4/jerry_main.c | 4 +++- targets/tizenrt-artik053/apps/jerryscript/jerry_main.c | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/targets/nuttx-stm32f4/jerry_main.c b/targets/nuttx-stm32f4/jerry_main.c index c644f5e92..5184189b7 100644 --- a/targets/nuttx-stm32f4/jerry_main.c +++ b/targets/nuttx-stm32f4/jerry_main.c @@ -152,11 +152,13 @@ print_unhandled_exception (jerry_value_t error_value, /**< error value */ { assert (jerry_value_has_error_flag (error_value)); - jerry_value_clear_error_flag (&error_value); + error_value = jerry_get_value_without_error_flag (error_value); jerry_value_t err_str_val = jerry_value_to_string (error_value); jerry_size_t err_str_size = jerry_get_string_size (err_str_val); jerry_char_t err_str_buf[256]; + jerry_release_value (error_value); + if (err_str_size >= 256) { const char msg[] = "[Error message too long]"; diff --git a/targets/tizenrt-artik053/apps/jerryscript/jerry_main.c b/targets/tizenrt-artik053/apps/jerryscript/jerry_main.c index 80d16f559..71f08777e 100644 --- a/targets/tizenrt-artik053/apps/jerryscript/jerry_main.c +++ b/targets/tizenrt-artik053/apps/jerryscript/jerry_main.c @@ -130,11 +130,13 @@ print_unhandled_exception (jerry_value_t error_value, /**< error value */ { assert (jerry_value_has_error_flag (error_value)); - jerry_value_clear_error_flag (&error_value); + error_value = jerry_get_value_without_error_flag (error_value); jerry_value_t err_str_val = jerry_value_to_string (error_value); jerry_size_t err_str_size = jerry_get_string_size (err_str_val); jerry_char_t err_str_buf[256]; + jerry_release_value (error_value); + if (err_str_size >= 256) { const char msg[] = "[Error message too long]";