Skip to content

Commit 585332f

Browse files
authored
Fix define_own_property_descriptor to set configurable flag correctly (#3877)
JerryScript-DCO-1.0-Signed-off-by: Roland Takacs rtakacs@inf.u-szeged.hu
1 parent 36bf1ec commit 585332f

File tree

2 files changed

+20
-3
lines changed

2 files changed

+20
-3
lines changed

jerry-core/api/jerry.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2582,8 +2582,8 @@ jerry_define_own_property (const jerry_value_t obj_val, /**< object value */
25822582

25832583
if (prop_desc_p->is_configurable_defined)
25842584
{
2585-
flags |= (uint32_t) (ECMA_PROP_IS_CONFIGURABLE_DEFINED | (prop_desc_p->is_enumerable ? ECMA_PROP_IS_CONFIGURABLE
2586-
: ECMA_PROP_NO_OPTS));
2585+
flags |= (uint32_t) (ECMA_PROP_IS_CONFIGURABLE_DEFINED | (prop_desc_p->is_configurable ? ECMA_PROP_IS_CONFIGURABLE
2586+
: ECMA_PROP_NO_OPTS));
25872587
}
25882588

25892589
/* Copy data property info. */

tests/unit-core/test-api-property.c

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,6 @@ main (void)
6464
TEST_ASSERT (jerry_value_is_undefined (prop_desc.getter));
6565
TEST_ASSERT (prop_desc.is_set_defined == false);
6666
TEST_ASSERT (jerry_value_is_undefined (prop_desc.setter));
67-
jerry_release_value (global_obj_val);
6867
jerry_free_property_descriptor_fields (&prop_desc);
6968

7069
if (jerry_is_feature_enabled (JERRY_FEATURE_PROXY))
@@ -83,6 +82,24 @@ main (void)
8382

8483
jerry_release_value (prop_name);
8584

85+
/* Test: define and get own property descriptor */
86+
prop_desc.is_enumerable = true;
87+
prop_name = jerry_create_string ((const jerry_char_t *) "enumerable-property");
88+
res = jerry_define_own_property (global_obj_val, prop_name, &prop_desc);
89+
TEST_ASSERT (!jerry_value_is_error (res));
90+
TEST_ASSERT (jerry_value_is_boolean (res));
91+
TEST_ASSERT (jerry_get_boolean_value (res));
92+
jerry_release_value (res);
93+
jerry_free_property_descriptor_fields (&prop_desc);
94+
is_ok = jerry_get_own_property_descriptor (global_obj_val, prop_name, &prop_desc);
95+
TEST_ASSERT (is_ok);
96+
TEST_ASSERT (prop_desc.is_writable == false);
97+
TEST_ASSERT (prop_desc.is_enumerable == true);
98+
TEST_ASSERT (prop_desc.is_configurable == false);
99+
100+
jerry_release_value (prop_name);
101+
jerry_release_value (global_obj_val);
102+
86103
jerry_cleanup ();
87104

88105
return 0;

0 commit comments

Comments
 (0)