Skip to content

Commit

Permalink
(just in case) make isDataDescriptor operation stricter
Browse files Browse the repository at this point in the history
  • Loading branch information
zloirock committed Aug 22, 2021
1 parent 67ed50d commit f77b467
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 7 deletions.
5 changes: 5 additions & 0 deletions packages/core-js/internals/is-data-descriptor.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
var has = require('../internals/has');

module.exports = function (descriptor) {
return descriptor !== undefined && (has(descriptor, 'value') || has(descriptor, 'writable'));
};
9 changes: 4 additions & 5 deletions packages/core-js/modules/es.reflect.get.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
var $ = require('../internals/export');
var isObject = require('../internals/is-object');
var anObject = require('../internals/an-object');
var has = require('../internals/has');
var isDataDescriptor = require('../internals/is-data-descriptor');
var getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');
var getPrototypeOf = require('../internals/object-get-prototype-of');

Expand All @@ -11,11 +11,10 @@ function get(target, propertyKey /* , receiver */) {
var receiver = arguments.length < 3 ? target : arguments[2];
var descriptor, prototype;
if (anObject(target) === receiver) return target[propertyKey];
if (descriptor = getOwnPropertyDescriptorModule.f(target, propertyKey)) return has(descriptor, 'value')
descriptor = getOwnPropertyDescriptorModule.f(target, propertyKey);
if (descriptor) return isDataDescriptor(descriptor)
? descriptor.value
: descriptor.get === undefined
? undefined
: descriptor.get.call(receiver);
: descriptor.get === undefined ? undefined : descriptor.get.call(receiver);
if (isObject(prototype = getPrototypeOf(target))) return get(prototype, propertyKey, receiver);
}

Expand Down
4 changes: 2 additions & 2 deletions packages/core-js/modules/es.reflect.set.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
var $ = require('../internals/export');
var anObject = require('../internals/an-object');
var isObject = require('../internals/is-object');
var has = require('../internals/has');
var isDataDescriptor = require('../internals/is-data-descriptor');
var fails = require('../internals/fails');
var definePropertyModule = require('../internals/object-define-property');
var getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');
Expand All @@ -20,7 +20,7 @@ function set(target, propertyKey, V /* , receiver */) {
}
ownDescriptor = createPropertyDescriptor(0);
}
if (has(ownDescriptor, 'value')) {
if (isDataDescriptor(ownDescriptor)) {
if (ownDescriptor.writable === false || !isObject(receiver)) return false;
if (existingDescriptor = getOwnPropertyDescriptorModule.f(receiver, propertyKey)) {
if (existingDescriptor.get || existingDescriptor.set || existingDescriptor.writable === false) return false;
Expand Down

0 comments on commit f77b467

Please sign in to comment.