diff options
author | Istvan Miklos <imiklos2@inf.u-szeged.hu> | 2018-06-11 03:16:58 +0200 |
---|---|---|
committer | yichoi <duddlf.choi@samsung.com> | 2018-06-11 10:16:58 +0900 |
commit | 2d0e37ff7468e222b6f3ec55d1a2181da5be2db7 (patch) | |
tree | a3806177a6d8dfae59144e25f1535fcfe89688cc /jerry-core | |
parent | be59d0a224de14d67721711e2cfc577c8637dc58 (diff) |
Replace the jerry_value_set_error_flag function with jerry_create_error_from_value (#2367)
JerryScript-DCO-1.0-Signed-off-by: Istvan Miklos imiklos2@inf.u-szeged.hu
Diffstat (limited to 'jerry-core')
-rw-r--r-- | jerry-core/api/jerry.c | 32 | ||||
-rw-r--r-- | jerry-core/include/jerryscript-core.h | 2 |
2 files changed, 24 insertions, 10 deletions
diff --git a/jerry-core/api/jerry.c b/jerry-core/api/jerry.c index 9417cdd2..06073f1c 100644 --- a/jerry-core/api/jerry.c +++ b/jerry-core/api/jerry.c @@ -934,26 +934,40 @@ jerry_get_value_from_error (jerry_value_t value, /**< api value */ } /* jerry_get_value_from_error */ /** - * Set the error flag if the value is not an error reference. + * Create error from an api value. + * + * Create error value from an api value. If the second argument is true + * it will release the input api value. + * + * @return api error value */ -void -jerry_value_set_error_flag (jerry_value_t *value_p) /**< api value */ +jerry_value_t +jerry_create_error_from_value (jerry_value_t value, /**< api value */ + bool release) /**< release api value */ { jerry_assert_api_available (); - if (JERRY_UNLIKELY (ecma_is_value_error_reference (*value_p))) + if (JERRY_UNLIKELY (ecma_is_value_error_reference (value))) { /* This is a rare case so it is optimized for * binary size rather than performance. */ - if (!jerry_value_is_abort (*value_p)) + if (!jerry_value_is_abort (value)) { - return; + return (release ? value : jerry_acquire_value (value)); } - *value_p = ecma_clear_error_reference (*value_p, false); + + value = jerry_get_value_from_error (value, release); + release = true; } - *value_p = ecma_create_error_reference (*value_p, true); -} /* jerry_value_set_error_flag */ + jerry_value_t ret_val = ecma_create_error_reference (value, true); + if (release) + { + jerry_release_value (value); + } + + return ret_val; +} /* jerry_create_error_from_value */ /** * Set both the abort and error flags if the value is not an error reference. diff --git a/jerry-core/include/jerryscript-core.h b/jerry-core/include/jerryscript-core.h index 28067d09..d720c708 100644 --- a/jerry-core/include/jerryscript-core.h +++ b/jerry-core/include/jerryscript-core.h @@ -369,7 +369,7 @@ bool jerry_is_feature_enabled (const jerry_feature_t feature); * Error manipulation functions. */ jerry_value_t jerry_get_value_from_error (jerry_value_t value, bool release); -void jerry_value_set_error_flag (jerry_value_t *value_p); +jerry_value_t jerry_create_error_from_value (jerry_value_t value, bool release); void jerry_value_set_abort_flag (jerry_value_t *value_p); /** |