summaryrefslogtreecommitdiff
path: root/js/lib
diff options
context:
space:
mode:
authorGuillaume Crico <gcrico@fede.org>2014-11-17 13:31:29 +0100
committerGuillaume Crico <gcrico@fede.org>2014-11-17 13:31:29 +0100
commitab76ca32ad353c3196357b02069e93267928751e (patch)
tree6fd01cfd9c4ed19689f06e0802596cace6cdea11 /js/lib
parentc507d164f5856779d23ef030c2a656391707a5ac (diff)
Fix Issue 202 - Catch RangeError thrown by native String.fromCodePoint (js implementation)
When using a JS engine that provides a native String.fromCodePoint ES6 implementation (e.g. SpiderMonkey), a RangeError is thrown if the codepoint is invalid. When adding the from-code-point.js polyfill, the js implementation was modified in order to handle invalid code point by returning the 0xFFFD placeholder glyph. So this is not a real "polyfill", but an specific implementation (adapted to the parser needs). So, if a native String.fromCodePoint implementation is availbale, the fromCodePoint function should catch the RangeError and return the 0xFFFD placeholder glyph.
Diffstat (limited to 'js/lib')
-rw-r--r--js/lib/from-code-point.js11
1 files changed, 10 insertions, 1 deletions
diff --git a/js/lib/from-code-point.js b/js/lib/from-code-point.js
index 94eca65..037c35e 100644
--- a/js/lib/from-code-point.js
+++ b/js/lib/from-code-point.js
@@ -2,7 +2,16 @@
/*! http://mths.be/fromcodepoint v0.2.1 by @mathias */
if (String.fromCodePoint) {
- module.exports = String.fromCodePoint;
+ module.exports = function (_) {
+ try {
+ return String.fromCodePoint(_);
+ } catch (e) {
+ if (e instanceof RangeError) {
+ return String.fromCharCode(0xFFFD);
+ }
+ throw e;
+ }
+ }
} else {