From 47d11d092d22fe69456c2f7f1afa706b8365bbf9 Mon Sep 17 00:00:00 2001 From: Denis Pushkarev Date: Sat, 29 May 2021 02:06:36 +0700 Subject: [PATCH] added a workaround of possible browser crash on `Object.prototype` accessors method in WebKit ~ Android 4.0, close #232 --- CHANGELOG.md | 2 +- .../core-js/internals/object-prototype-accessors-forced.js | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6087f18d10db..192346b746a3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ ## Changelog ##### Unreleased -- Nothing +- Added a workaround of possible browser crash on `Object.prototype` accessors method in WebKit ~ Android 4.0, [#232](https://github.com/zloirock/core-js/issues/232) ##### 3.13.0 - 2021.05.26 - Accessible `Object#hasOwnProperty` (`Object.hasOwn`) proposal moved to the stage 3, [May 2021 TC39 meeting](https://github.com/babel/proposals/issues/74#issuecomment-848121673) diff --git a/packages/core-js/internals/object-prototype-accessors-forced.js b/packages/core-js/internals/object-prototype-accessors-forced.js index 1f68a0342616..fb45bd2f212c 100644 --- a/packages/core-js/internals/object-prototype-accessors-forced.js +++ b/packages/core-js/internals/object-prototype-accessors-forced.js @@ -2,9 +2,14 @@ var IS_PURE = require('../internals/is-pure'); var global = require('../internals/global'); var fails = require('../internals/fails'); +var userAgent = require('../internals/engine-user-agent'); // Forced replacement object prototype accessors methods module.exports = IS_PURE || !fails(function () { + // This feature detection crashes old WebKit + // https://github.com/zloirock/core-js/issues/232 + var webkit = userAgent.match(/AppleWebKit\/(\d+)\./); + if (webkit && +webkit[1] < 535) return; var key = Math.random(); // In FF throws only define methods // eslint-disable-next-line no-undef, no-useless-call -- required for testing