Fix free of NULL value in function ecma_typedarray_helper_dispatch_construct (#4473)
Currently, ecma_op_get_prototype_from_constructor may return NULL and the function didn't raise that exception. Also optimize multiple assignment of prototype_obj_p and multiple access of JERRY_CONTEXT (current_new_target) out. This fixes https://github.com/jerryscript-project/jerryscript/issues/4463 JerryScript-DCO-1.0-Signed-off-by: Yonggang Luo luoyonggang@gmail.com
This commit is contained in:
@@ -40,11 +40,20 @@ ecma_typedarray_helper_dispatch_construct (const ecma_value_t *arguments_list_p,
|
||||
{
|
||||
JERRY_ASSERT (arguments_list_len == 0 || arguments_list_p != NULL);
|
||||
ecma_builtin_id_t proto_id = ecma_typedarray_helper_get_prototype_id (typedarray_id);
|
||||
ecma_object_t *prototype_obj_p = ecma_builtin_get (proto_id);
|
||||
ecma_object_t *prototype_obj_p = NULL;
|
||||
ecma_object_t *current_new_target_p = JERRY_CONTEXT (current_new_target_p);
|
||||
|
||||
if (JERRY_CONTEXT (current_new_target_p))
|
||||
if (current_new_target_p != NULL)
|
||||
{
|
||||
prototype_obj_p = ecma_op_get_prototype_from_constructor (JERRY_CONTEXT (current_new_target_p), proto_id);
|
||||
prototype_obj_p = ecma_op_get_prototype_from_constructor (current_new_target_p, proto_id);
|
||||
if (prototype_obj_p == NULL)
|
||||
{
|
||||
return ECMA_VALUE_ERROR;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
prototype_obj_p = ecma_builtin_get (proto_id);
|
||||
}
|
||||
|
||||
ecma_value_t val = ecma_op_create_typedarray (arguments_list_p,
|
||||
@@ -53,7 +62,7 @@ ecma_typedarray_helper_dispatch_construct (const ecma_value_t *arguments_list_p,
|
||||
ecma_typedarray_helper_get_shift_size (typedarray_id),
|
||||
typedarray_id);
|
||||
|
||||
if (JERRY_CONTEXT (current_new_target_p))
|
||||
if (current_new_target_p != NULL)
|
||||
{
|
||||
ecma_deref_object (prototype_obj_p);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user