Fix uninitialized data in create native property (#4650)
JerryScript-DCO-1.0-Signed-off-by: Zoltan Herczeg zherczeg.u-szeged@partner.samsung.com
This commit is contained in:
@@ -127,6 +127,7 @@ ecma_create_native_pointer_property (ecma_object_t *obj_p, /**< object to create
|
|||||||
|
|
||||||
new_item_p = (ecma_native_pointer_chain_t *) jmem_heap_alloc_block (sizeof (ecma_native_pointer_chain_t));
|
new_item_p = (ecma_native_pointer_chain_t *) jmem_heap_alloc_block (sizeof (ecma_native_pointer_chain_t));
|
||||||
item_p->next_p = new_item_p;
|
item_p->next_p = new_item_p;
|
||||||
|
new_item_p->next_p = NULL;
|
||||||
|
|
||||||
native_pointer_p = &new_item_p->data;
|
native_pointer_p = &new_item_p->data;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -40,6 +40,11 @@ static const jerry_object_native_info_t native_info_2 =
|
|||||||
.free_cb = NULL,
|
.free_cb = NULL,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static const jerry_object_native_info_t native_info_3 =
|
||||||
|
{
|
||||||
|
.free_cb = NULL,
|
||||||
|
};
|
||||||
|
|
||||||
static void
|
static void
|
||||||
check_native_info (jerry_value_t object_value, /**< object value */
|
check_native_info (jerry_value_t object_value, /**< object value */
|
||||||
const jerry_object_native_info_t *native_info_p, /**< native info */
|
const jerry_object_native_info_t *native_info_p, /**< native info */
|
||||||
@@ -111,6 +116,39 @@ main (void)
|
|||||||
TEST_ASSERT (!jerry_get_object_native_pointer (object_value, NULL, &native_info_1));
|
TEST_ASSERT (!jerry_get_object_native_pointer (object_value, NULL, &native_info_1));
|
||||||
TEST_ASSERT (!jerry_get_object_native_pointer (object_value, NULL, &native_info_2));
|
TEST_ASSERT (!jerry_get_object_native_pointer (object_value, NULL, &native_info_2));
|
||||||
|
|
||||||
|
jerry_set_object_native_pointer (object_value, global_p, &native_info_1);
|
||||||
|
jerry_set_object_native_pointer (object_value, NULL, &native_info_2);
|
||||||
|
jerry_set_object_native_pointer (object_value, global_p, &native_info_3);
|
||||||
|
|
||||||
|
check_native_info (object_value, &native_info_1, global_p);
|
||||||
|
check_native_info (object_value, &native_info_2, NULL);
|
||||||
|
check_native_info (object_value, &native_info_3, global_p);
|
||||||
|
|
||||||
|
TEST_ASSERT (jerry_delete_object_native_pointer (object_value, &native_info_1));
|
||||||
|
TEST_ASSERT (jerry_delete_object_native_pointer (object_value, &native_info_2));
|
||||||
|
TEST_ASSERT (jerry_delete_object_native_pointer (object_value, &native_info_3));
|
||||||
|
|
||||||
|
TEST_ASSERT (!jerry_get_object_native_pointer (object_value, NULL, &native_info_1));
|
||||||
|
TEST_ASSERT (!jerry_get_object_native_pointer (object_value, NULL, &native_info_2));
|
||||||
|
TEST_ASSERT (!jerry_get_object_native_pointer (object_value, NULL, &native_info_3));
|
||||||
|
|
||||||
|
jerry_set_object_native_pointer (object_value, NULL, &native_info_1);
|
||||||
|
jerry_set_object_native_pointer (object_value, global_p, &native_info_2);
|
||||||
|
jerry_set_object_native_pointer (object_value, NULL, &native_info_3);
|
||||||
|
|
||||||
|
check_native_info (object_value, &native_info_1, NULL);
|
||||||
|
check_native_info (object_value, &native_info_2, global_p);
|
||||||
|
check_native_info (object_value, &native_info_3, NULL);
|
||||||
|
|
||||||
|
/* Reversed delete order. */
|
||||||
|
TEST_ASSERT (jerry_delete_object_native_pointer (object_value, &native_info_3));
|
||||||
|
TEST_ASSERT (jerry_delete_object_native_pointer (object_value, &native_info_2));
|
||||||
|
TEST_ASSERT (jerry_delete_object_native_pointer (object_value, &native_info_1));
|
||||||
|
|
||||||
|
TEST_ASSERT (!jerry_get_object_native_pointer (object_value, NULL, &native_info_1));
|
||||||
|
TEST_ASSERT (!jerry_get_object_native_pointer (object_value, NULL, &native_info_2));
|
||||||
|
TEST_ASSERT (!jerry_get_object_native_pointer (object_value, NULL, &native_info_3));
|
||||||
|
|
||||||
jerry_release_value (object_value);
|
jerry_release_value (object_value);
|
||||||
|
|
||||||
jerry_cleanup ();
|
jerry_cleanup ();
|
||||||
|
|||||||
Reference in New Issue
Block a user