diff options
author | Guillaume Crico <gcrico@fede.org> | 2014-11-17 13:31:29 +0100 |
---|---|---|
committer | Guillaume Crico <gcrico@fede.org> | 2014-11-17 13:31:29 +0100 |
commit | ab76ca32ad353c3196357b02069e93267928751e (patch) | |
tree | 6fd01cfd9c4ed19689f06e0802596cace6cdea11 /js/lib | |
parent | c507d164f5856779d23ef030c2a656391707a5ac (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.js | 11 |
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 { |