From 2bb5c6a8aea93a80ab4e4765a7d714296e0faa4f Mon Sep 17 00:00:00 2001 From: Roland Takacs Date: Mon, 5 Mar 2018 10:35:07 +0100 Subject: [PATCH] Eliminate early memory deallocations in case of NuttX and TizenRT 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 c644f5e920..5184189b75 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 80d16f5596..71f08777e7 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]";