mirror of
https://github.com/jerryscript-project/jerryscript.git
synced 2025-12-15 16:29:21 +00:00
Introducing ecma_free_property_descriptor.
This commit is contained in:
parent
4c5c48eef2
commit
c06c6a5ed8
@ -831,6 +831,33 @@ ecma_make_empty_property_descriptor (void)
|
||||
return prop_desc;
|
||||
} /* ecma_make_empty_property_descriptor */
|
||||
|
||||
/**
|
||||
* Free values contained in the property descriptor
|
||||
* and make it empty property descriptor
|
||||
*/
|
||||
void
|
||||
ecma_free_property_descriptor (ecma_property_descriptor_t *prop_desc_p) /**< property descriptor */
|
||||
{
|
||||
if (prop_desc_p->is_value_defined)
|
||||
{
|
||||
ecma_free_value (prop_desc_p->value, true);
|
||||
}
|
||||
|
||||
if (prop_desc_p->is_get_defined
|
||||
&& prop_desc_p->get_p != NULL)
|
||||
{
|
||||
ecma_deref_object (prop_desc_p->get_p);
|
||||
}
|
||||
|
||||
if (prop_desc_p->is_set_defined
|
||||
&& prop_desc_p->set_p != NULL)
|
||||
{
|
||||
ecma_deref_object (prop_desc_p->set_p);
|
||||
}
|
||||
|
||||
*prop_desc_p = ecma_make_empty_property_descriptor ();
|
||||
} /* ecma_free_property_descriptor */
|
||||
|
||||
/**
|
||||
* @}
|
||||
* @}
|
||||
|
||||
@ -224,6 +224,7 @@ extern bool ecma_is_property_enumerable (ecma_property_t* prop_p);
|
||||
extern bool ecma_is_property_configurable (ecma_property_t* prop_p);
|
||||
|
||||
extern ecma_property_descriptor_t ecma_make_empty_property_descriptor (void);
|
||||
extern void ecma_free_property_descriptor (ecma_property_descriptor_t *prop_desc_p);
|
||||
|
||||
/* ecma-helpers-conversion.c */
|
||||
extern ecma_number_t ecma_zt_string_to_number (const ecma_char_t *str_p);
|
||||
|
||||
@ -878,30 +878,13 @@ ecma_op_to_property_descriptor (ecma_value_t obj_value, /**< object value */
|
||||
if (!ecma_is_completion_value_throw (ret_value))
|
||||
{
|
||||
JERRY_ASSERT (ecma_is_completion_value_empty (ret_value));
|
||||
|
||||
*out_prop_desc_p = prop_desc;
|
||||
}
|
||||
else
|
||||
{
|
||||
*out_prop_desc_p = ecma_make_empty_property_descriptor ();
|
||||
|
||||
if (prop_desc.is_value_defined)
|
||||
{
|
||||
ecma_free_value (prop_desc.value, true);
|
||||
}
|
||||
|
||||
if (prop_desc.is_get_defined
|
||||
&& prop_desc.get_p != NULL)
|
||||
{
|
||||
ecma_deref_object (prop_desc.get_p);
|
||||
}
|
||||
|
||||
if (prop_desc.is_set_defined
|
||||
&& prop_desc.set_p != NULL)
|
||||
{
|
||||
ecma_deref_object (prop_desc.set_p);
|
||||
}
|
||||
ecma_free_property_descriptor (&prop_desc);
|
||||
}
|
||||
|
||||
*out_prop_desc_p = prop_desc;
|
||||
}
|
||||
|
||||
return ret_value;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user