Add missing jerry_release_value by calling jerry_set_property and jerry_set_property_by_index (#2821)

JerryScript-DCO-1.0-Signed-off-by: jerry-weng jjweng2007@gmail.com
This commit is contained in:
jerry-weng 2019-04-18 17:24:27 +08:00 committed by László Langó
parent 5be93dc7f7
commit 9d7a0db0dd
9 changed files with 35 additions and 19 deletions

View File

@ -6737,7 +6737,7 @@ jerry_json_stringify (const jerry_value_t object_to_stringify);
jerry_value_t obj = jerry_create_object ();
jerry_value_t key = jerry_create_string ((const jerry_char_t *) "name");
jerry_value_t value = jerry_create_string ((const jerry_char_t *) "John");
jerry_set_property (obj, key, value);
jerry_release_value (jerry_set_property (obj, key, value));
jerry_value_t stringified = jerry_json_stringify (obj);
//stringified now contains a json formated string

View File

@ -151,7 +151,7 @@ main (void)
jerry_value_t prop_value = jerry_create_string (str);
/* Setting the string value as a property of the Global object */
jerry_set_property (global_object, prop_name, prop_value);
jerry_release_value (jerry_set_property (global_object, prop_name, prop_value));
/* Releasing string values, as it is no longer necessary outside of engine */
jerry_release_value (prop_name);
@ -386,7 +386,7 @@ main (void)
/* Set the native function as a property of the empty JS object */
jerry_value_t prop_name = jerry_create_string ((const jerry_char_t *) "myFunc");
jerry_set_property (object, prop_name, func_obj);
jerry_release_value (jerry_set_property (object, prop_name, func_obj));
jerry_release_value (prop_name);
jerry_release_value (func_obj);
@ -395,7 +395,7 @@ main (void)
/* Add the JS object to the global context */
prop_name = jerry_create_string ((const jerry_char_t *) "MyObject");
jerry_set_property (global_object, prop_name, object);
jerry_release_value (jerry_set_property (global_object, prop_name, object));
jerry_release_value (prop_name);
jerry_release_value (object);
jerry_release_value (global_object);
@ -462,7 +462,7 @@ add_handler (const jerry_value_t func_value, /**< function object */
jerry_value_t res_val = jerry_create_number (x + d);
/* Set the new value of 'this.x' */
jerry_set_property (this_val, prop_name, res_val);
jerry_release_value (jerry_set_property (this_val, prop_name, res_val));
jerry_release_value (res_val);
}
@ -506,7 +506,7 @@ main (void)
/* Set the native function as a property of previously created MyObject */
jerry_value_t prop_name = jerry_create_string ((const jerry_char_t *) "add2x");
jerry_set_property (my_js_obj_val, prop_name, add_func_obj);
jerry_release_value (jerry_set_property (my_js_obj_val, prop_name, add_func_obj));
jerry_release_value (add_func_obj);
jerry_release_value (prop_name);

View File

@ -139,7 +139,7 @@ DECLARE_CLASS_FUNCTION(I2C, read) {
for (uint32_t i = 0; i < data_len; i++) {
jerry_value_t val = jerry_create_number(double(data[i]));
jerry_set_property_by_index(out_array, i, val);
jerry_release_value(jerry_set_property_by_index(out_array, i, val));
jerry_release_value(val);
}

View File

@ -99,7 +99,7 @@ DECLARE_CLASS_FUNCTION(InterruptIn, rise) {
// Keep track of our callback internally.
jerry_value_t property_name = jerry_create_string((const jerry_char_t*)"cb_rise");
jerry_set_property(this_obj, property_name, f);
jerry_release_value(jerry_set_property(this_obj, property_name, f));
jerry_release_value(property_name);
return jerry_create_undefined();
@ -164,7 +164,7 @@ DECLARE_CLASS_FUNCTION(InterruptIn, fall) {
// Keep track of our callback internally.
jerry_value_t property_name = jerry_create_string((const jerry_char_t*)"cb_fall");
jerry_set_property(this_obj, property_name, f);
jerry_release_value(jerry_set_property(this_obj, property_name, f));
jerry_release_value(property_name);
return jerry_create_undefined();

View File

@ -39,7 +39,7 @@ void jsmbed_js_load_magic_strings() {
jerry_value_t constant_value = jerry_create_number(jsmbed_js_magic_string_values[idx]);
jerry_value_t magic_string = jerry_create_string(jsmbed_js_magic_strings[idx]);
jerry_set_property(global, magic_string, constant_value);
jerry_release_value(jerry_set_property(global, magic_string, constant_value));
jerry_release_value(constant_value);
jerry_release_value(magic_string);

View File

@ -67,7 +67,7 @@ bool jsmbed_wrap_register_class_function(jerry_value_t this_obj, const char* nam
jerry_value_t property_name = jerry_create_string(reinterpret_cast<const jerry_char_t *>(name));
jerry_value_t handler_obj = jerry_create_external_function(handler);
jerry_set_property(this_obj, property_name, handler_obj);
jerry_release_value(jerry_set_property(this_obj, property_name, handler_obj));
jerry_release_value(handler_obj);
jerry_release_value(property_name);

View File

@ -80,13 +80,13 @@ init_jerry ()
func_obj = jerry_create_external_function (set_led);
prop_name = jerry_create_string ((const jerry_char_t *) "setLed");
jerry_set_property (object, prop_name, func_obj);
jerry_release_value (jerry_set_property (object, prop_name, func_obj));
jerry_release_value (prop_name);
jerry_release_value (func_obj);
func_obj = jerry_create_external_function (js_delay);
prop_name = jerry_create_string ((const jerry_char_t *) "delay");
jerry_set_property (object, prop_name, func_obj);
jerry_release_value (jerry_set_property (object, prop_name, func_obj));
jerry_release_value (prop_name);
jerry_release_value (func_obj);
@ -95,7 +95,7 @@ init_jerry ()
/* Add the JS object to the global context */
prop_name = jerry_create_string ((const jerry_char_t *) "test");
jerry_set_property (global_object, prop_name, object);
jerry_release_value (jerry_set_property (global_object, prop_name, object));
jerry_release_value (prop_name);
jerry_release_value (object);
jerry_release_value (global_object);

View File

@ -154,7 +154,10 @@ handler_construct (const jerry_value_t func_obj_val, /**< function object */
TEST_ASSERT (jerry_get_boolean_value (args_p[0]) == true);
jerry_value_t field_name = jerry_create_string ((jerry_char_t *) "value_field");
jerry_set_property (this_val, field_name, args_p[0]);
jerry_value_t res = jerry_set_property (this_val, field_name, args_p[0]);
TEST_ASSERT (!jerry_value_is_error (res));
TEST_ASSERT (jerry_value_is_boolean (res) && jerry_get_boolean_value (res));
jerry_release_value (res);
jerry_release_value (field_name);
jerry_set_object_native_pointer (this_val,
@ -634,7 +637,10 @@ main (void)
TEST_ASSERT (jerry_get_array_length (array_obj_val) == 10);
jerry_value_t v_in = jerry_create_number (10.5);
jerry_set_property_by_index (array_obj_val, 5, v_in);
res = jerry_set_property_by_index (array_obj_val, 5, v_in);
TEST_ASSERT (!jerry_value_is_error (res));
TEST_ASSERT (jerry_value_is_boolean (res) && jerry_get_boolean_value (res));
jerry_release_value (res);
jerry_value_t v_out = jerry_get_property_by_index (array_obj_val, 5);
TEST_ASSERT (jerry_value_is_number (v_out)
@ -899,7 +905,10 @@ main (void)
char check_value[] = "{\"name\":\"John\"}";
jerry_value_t key = jerry_create_string ((const jerry_char_t *) "name");
jerry_value_t value = jerry_create_string ((const jerry_char_t *) "John");
jerry_set_property (obj, key, value);
res = jerry_set_property (obj, key, value);
TEST_ASSERT (!jerry_value_is_error (res));
TEST_ASSERT (jerry_value_is_boolean (res) && jerry_get_boolean_value (res));
jerry_release_value (res);
jerry_value_t stringified = jerry_json_stringify (obj);
TEST_ASSERT (jerry_value_is_string (stringified));
char buff[jerry_get_string_length (stringified)];

View File

@ -199,6 +199,7 @@ main (int argc, char **argv)
(void) argc;
(void) argv;
jerry_value_t js_global = 0, js_function = 0, js_property_name = 0;
jerry_value_t res;
#ifndef ENABLE_INIT_FINI
my_broken_module_register ();
@ -211,13 +212,19 @@ main (int argc, char **argv)
js_function = jerry_create_external_function (handle_require);
js_property_name = jerry_create_string ((const jerry_char_t *) "require");
jerry_set_property (js_global, js_property_name, js_function);
res = jerry_set_property (js_global, js_property_name, js_function);
TEST_ASSERT (!jerry_value_is_error (res));
TEST_ASSERT (jerry_value_is_boolean (res) && jerry_get_boolean_value (res));
jerry_release_value (res);
jerry_release_value (js_property_name);
jerry_release_value (js_function);
js_function = jerry_create_external_function (handle_clear_require_cache);
js_property_name = jerry_create_string ((const jerry_char_t *) "clear_require_cache");
jerry_set_property (js_global, js_property_name, js_function);
res = jerry_set_property (js_global, js_property_name, js_function);
TEST_ASSERT (!jerry_value_is_error (res));
TEST_ASSERT (jerry_value_is_boolean (res) && jerry_get_boolean_value (res));
jerry_release_value (res);
jerry_release_value (js_property_name);
jerry_release_value (js_function);