diff options
author | Steven R. Loomis <srloomis@us.ibm.com> | 2016-04-15 21:35:53 -0700 |
---|---|---|
committer | Steven R. Loomis <srloomis@us.ibm.com> | 2016-05-04 15:02:25 -0700 |
commit | cd752e8463fad7c4805951d9ba47cd2f39691f2d (patch) | |
tree | 3bdaaa4bc465b0a3fa00b519496cdf0aec729480 /lib | |
parent | bc8b525440c306470330450536743b993700d328 (diff) | |
download | android-node-v8-cd752e8463fad7c4805951d9ba47cd2f39691f2d.tar.gz android-node-v8-cd752e8463fad7c4805951d9ba47cd2f39691f2d.tar.bz2 android-node-v8-cd752e8463fad7c4805951d9ba47cd2f39691f2d.zip |
intl: Don't crash if v8BreakIterator not available
If the undocumented v8BreakIterator does not have data available,
monkeypatch it to throw an error instead of crashing.
Fixes: https://github.com/nodejs/node/issues/3111
PR-URL: https://github.com/nodejs/node/pull/4253
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/internal/process.js | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/lib/internal/process.js b/lib/internal/process.js index 881d91b11e..c435c2e871 100644 --- a/lib/internal/process.js +++ b/lib/internal/process.js @@ -117,6 +117,21 @@ function setupConfig(_source) { if (value === 'false') return false; return value; }); + const processConfig = process.binding('config'); + // Intl.v8BreakIterator() would crash w/ fatal error, so throw instead. + if (processConfig.hasIntl && + processConfig.hasSmallICU && + Intl.hasOwnProperty('v8BreakIterator') && + !process.icu_data_dir) { + const des = Object.getOwnPropertyDescriptor(Intl, 'v8BreakIterator'); + des.value = function v8BreakIterator() { + throw new Error('v8BreakIterator: full ICU data not installed. ' + + 'See https://github.com/nodejs/node/wiki/Intl'); + }; + Object.defineProperty(Intl, 'v8BreakIterator', des); + } + // Don’t let icu_data_dir leak through. + delete process.icu_data_dir; } |