Fix jerry_get_value_from_error (#2394)
Fix the function to take into account the second argument even if it is called with not an error value. JerryScript-DCO-1.0-Signed-off-by: Istvan Miklos imiklos2@inf.u-szeged.hu
This commit is contained in:
committed by
László Langó
parent
efa8850783
commit
62dee2dd71
@@ -1722,7 +1722,7 @@ whether the input error value must be released or not. If it is set to `true`,
|
|||||||
then a [`jerry_release_value`](#jerry_release_value) function will be called
|
then a [`jerry_release_value`](#jerry_release_value) function will be called
|
||||||
for the first argument, so the error value won't be available after the call of
|
for the first argument, so the error value won't be available after the call of
|
||||||
`jerry_get_value_from_error`. The second argument should be false if both error
|
`jerry_get_value_from_error`. The second argument should be false if both error
|
||||||
and its represented value are needed. The first argument is returned unchanged if it is not an error.
|
and its represented value are needed.
|
||||||
|
|
||||||
*Note*: Returned value must be freed with [jerry_release_value](#jerry_release_value) when it
|
*Note*: Returned value must be freed with [jerry_release_value](#jerry_release_value) when it
|
||||||
is no longer needed.
|
is no longer needed.
|
||||||
|
|||||||
@@ -921,7 +921,7 @@ jerry_get_value_from_error (jerry_value_t value, /**< api value */
|
|||||||
|
|
||||||
if (!ecma_is_value_error_reference (value))
|
if (!ecma_is_value_error_reference (value))
|
||||||
{
|
{
|
||||||
return value;
|
return release ? value : ecma_copy_value (value);
|
||||||
}
|
}
|
||||||
|
|
||||||
jerry_value_t ret_val = jerry_acquire_value (ecma_get_error_reference_from_value (value)->value);
|
jerry_value_t ret_val = jerry_acquire_value (ecma_get_error_reference_from_value (value)->value);
|
||||||
|
|||||||
@@ -33,6 +33,15 @@ main (void)
|
|||||||
jerry_release_value (err_val);
|
jerry_release_value (err_val);
|
||||||
|
|
||||||
jerry_value_t value = jerry_create_number (42);
|
jerry_value_t value = jerry_create_number (42);
|
||||||
|
value = jerry_get_value_from_error (value, true);
|
||||||
|
jerry_release_value (value);
|
||||||
|
|
||||||
|
value = jerry_create_number (42);
|
||||||
|
jerry_value_t value2 = jerry_get_value_from_error (value, false);
|
||||||
|
jerry_release_value (value);
|
||||||
|
jerry_release_value (value2);
|
||||||
|
|
||||||
|
value = jerry_create_number (42);
|
||||||
jerry_value_t error = jerry_create_error_from_value (value, true);
|
jerry_value_t error = jerry_create_error_from_value (value, true);
|
||||||
error = jerry_create_error_from_value (error, true);
|
error = jerry_create_error_from_value (error, true);
|
||||||
jerry_release_value (error);
|
jerry_release_value (error);
|
||||||
|
|||||||
Reference in New Issue
Block a user