From 9c3f81435752e211cea305f893bdd42609acabeb Mon Sep 17 00:00:00 2001 From: Marko Fabo Date: Tue, 12 Sep 2017 12:57:42 +0200 Subject: [PATCH] Fix #1931 The mentioned patch uses `this_obj` argument to get `setInterval` and `setTimeout` properties from the global object, but `this_obj` is undefined in these scopes. JerryScript-DCO-1.0-Signed-off-by: Marko Fabo mfabo@inf.u-szeged.hu --- .../jerryscript-mbed-drivers/source/setInterval-js.cpp | 4 +++- .../jerryscript-mbed-drivers/source/setTimeout-js.cpp | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/targets/mbedos5/jerryscript-mbed/jerryscript-mbed-drivers/source/setInterval-js.cpp b/targets/mbedos5/jerryscript-mbed/jerryscript-mbed-drivers/source/setInterval-js.cpp index b6b7ff506..395dcfa88 100644 --- a/targets/mbedos5/jerryscript-mbed/jerryscript-mbed-drivers/source/setInterval-js.cpp +++ b/targets/mbedos5/jerryscript-mbed/jerryscript-mbed-drivers/source/setInterval-js.cpp @@ -60,12 +60,14 @@ DECLARE_GLOBAL_FUNCTION(clearInterval) { mbed::js::EventLoop::getInstance().getQueue().cancel(id); + jerry_value_t global_obj = jerry_get_global_object(); jerry_value_t prop_name = jerry_create_string((const jerry_char_t*)"setInterval"); - jerry_value_t func_obj = jerry_get_property(this_obj, prop_name); + jerry_value_t func_obj = jerry_get_property(global_obj, prop_name); jerry_release_value(prop_name); jerry_delete_property_by_index(func_obj, id); jerry_release_value(func_obj); + jerry_release_value(global_obj); return jerry_create_undefined(); } diff --git a/targets/mbedos5/jerryscript-mbed/jerryscript-mbed-drivers/source/setTimeout-js.cpp b/targets/mbedos5/jerryscript-mbed/jerryscript-mbed-drivers/source/setTimeout-js.cpp index 11cd58c26..edccc536c 100644 --- a/targets/mbedos5/jerryscript-mbed/jerryscript-mbed-drivers/source/setTimeout-js.cpp +++ b/targets/mbedos5/jerryscript-mbed/jerryscript-mbed-drivers/source/setTimeout-js.cpp @@ -60,12 +60,14 @@ DECLARE_GLOBAL_FUNCTION(clearTimeout) { mbed::js::EventLoop::getInstance().getQueue().cancel(id); + jerry_value_t global_obj = jerry_get_global_object(); jerry_value_t prop_name = jerry_create_string((const jerry_char_t*)"setTimeout"); - jerry_value_t func_obj = jerry_get_property(this_obj, prop_name); + jerry_value_t func_obj = jerry_get_property(global_obj, prop_name); jerry_release_value(prop_name); jerry_delete_property_by_index(func_obj, id); jerry_release_value(func_obj); + jerry_release_value(global_obj); return jerry_create_undefined(); }