diff --git a/jerry-core/ecma/base/ecma-helpers.cpp b/jerry-core/ecma/base/ecma-helpers.cpp index d1c55f9e0..e30385d19 100644 --- a/jerry-core/ecma/base/ecma-helpers.cpp +++ b/jerry-core/ecma/base/ecma-helpers.cpp @@ -1293,25 +1293,18 @@ ecma_get_property_descriptor_from_property (ecma_property_t *prop_p) /**< proper else if (prop_p->type == ECMA_PROPERTY_NAMEDACCESSOR) { prop_desc.get_p = ecma_get_named_accessor_property_getter (prop_p); + prop_desc.is_get_defined = true; if (prop_desc.get_p != NULL) { - prop_desc.is_get_defined = true; 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.is_set_defined = true; if (prop_desc.set_p != NULL) { - prop_desc.is_set_defined = true; ecma_ref_object (prop_desc.set_p); } - else - { - prop_desc.is_set_defined = false; - } } return prop_desc; diff --git a/tests/jerry/object-defineproperty.js b/tests/jerry/object-defineproperty.js index 6a013472b..ca4bbf331 100644 --- a/tests/jerry/object-defineproperty.js +++ b/tests/jerry/object-defineproperty.js @@ -37,4 +37,21 @@ try { var desc = Object.getOwnPropertyDescriptor (obj, "prop"); assert (desc.value === 2010); assert (typeof (desc.get) === 'undefined'); -} \ No newline at end of file +} + +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);