summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorSteven R. Loomis <srloomis@us.ibm.com>2016-04-15 21:35:53 -0700
committerSteven R. Loomis <srloomis@us.ibm.com>2016-05-04 15:02:25 -0700
commitcd752e8463fad7c4805951d9ba47cd2f39691f2d (patch)
tree3bdaaa4bc465b0a3fa00b519496cdf0aec729480 /lib
parentbc8b525440c306470330450536743b993700d328 (diff)
downloadandroid-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.js15
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;
}