diff --git a/lib/output.js b/lib/output.js index 764b8e36..ddc28820 100644 --- a/lib/output.js +++ b/lib/output.js @@ -1262,16 +1262,18 @@ function OutputStream(options) { } }); + var xml_unsafe = [ + // all C0 characters except tab, newline and return are invalid + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x0c, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, + 0xfffe, 0xffff + ]; + function regexp_safe_literal(code, xml_safe) { if (xml_safe) { - if ([ - // all C0 characters except tab, newline and return are invalid - 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, - 0x08, 0x0c, 0x0e, 0x0f, - 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, - 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, - 0xfffe, 0xffff - ].indexOf(code) >= 0) + if (xml_unsafe.indexOf(code) >= 0) return false; // C1 (except 0x85) and surrogate pair code points are invalid if ((code >= 0x7f && code != 0x85 && code <= 0x9f)