aboutsummaryrefslogtreecommitdiff
path: root/jerry-core
diff options
context:
space:
mode:
authorIstvan Miklos <imiklos2@inf.u-szeged.hu>2018-06-11 03:16:58 +0200
committeryichoi <duddlf.choi@samsung.com>2018-06-11 10:16:58 +0900
commit2d0e37ff7468e222b6f3ec55d1a2181da5be2db7 (patch)
treea3806177a6d8dfae59144e25f1535fcfe89688cc /jerry-core
parentbe59d0a224de14d67721711e2cfc577c8637dc58 (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.c32
-rw-r--r--jerry-core/include/jerryscript-core.h2
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);
/**