Fix ecma_get_property_descriptor_from_property for accessor properties with [[Get]] / [[Set]] set to undefined value

JerryScript-DCO-1.0-Signed-off-by: Kristof Kosztyo kkosztyo.u-szeged@partner.samsung.com
This commit is contained in:
Kristof Kosztyo
2015-08-05 16:25:03 +02:00
parent fe0ec9d7fa
commit 2eb8f76089
2 changed files with 21 additions and 11 deletions
+3 -10
View File
@@ -1293,25 +1293,18 @@ ecma_get_property_descriptor_from_property (ecma_property_t *prop_p) /**< proper
else if (prop_p->type == ECMA_PROPERTY_NAMEDACCESSOR) else if (prop_p->type == ECMA_PROPERTY_NAMEDACCESSOR)
{ {
prop_desc.get_p = ecma_get_named_accessor_property_getter (prop_p); prop_desc.get_p = ecma_get_named_accessor_property_getter (prop_p);
prop_desc.is_get_defined = true;
if (prop_desc.get_p != NULL) if (prop_desc.get_p != NULL)
{ {
prop_desc.is_get_defined = true;
ecma_ref_object (prop_desc.get_p); ecma_ref_object (prop_desc.get_p);
} }
else
{
prop_desc.is_get_defined = false;
}
prop_desc.set_p = ecma_get_named_accessor_property_setter (prop_p); prop_desc.set_p = ecma_get_named_accessor_property_setter (prop_p);
prop_desc.is_set_defined = true;
if (prop_desc.set_p != NULL) if (prop_desc.set_p != NULL)
{ {
prop_desc.is_set_defined = true;
ecma_ref_object (prop_desc.set_p); ecma_ref_object (prop_desc.set_p);
} }
else
{
prop_desc.is_set_defined = false;
}
} }
return prop_desc; return prop_desc;
+17
View File
@@ -38,3 +38,20 @@ try {
assert (desc.value === 2010); assert (desc.value === 2010);
assert (typeof (desc.get) === 'undefined'); assert (typeof (desc.get) === 'undefined');
} }
obj = {};
var setter = function () {};
Object.defineProperty(obj, "prop", {
set: setter,
configurable: true
});
var desc1 = Object.getOwnPropertyDescriptor(obj, "prop");
Object.defineProperty(obj, "prop", {
set: undefined
});
var desc2 = Object.getOwnPropertyDescriptor(obj, "prop");
assert (desc1.set === setter && desc2.set === undefined);