diff --git a/js/js_test.go b/js/js_test.go index 0f308ef6e..2be9061c3 100644 --- a/js/js_test.go +++ b/js/js_test.go @@ -766,6 +766,7 @@ func TestJS(t *testing.T) { {`var D;var{U,W,W}=y`, `var{U,W,W}=y,D`}, {`var A;var b=(function(){var e;})=c,d`, `var d,A,b=function(){var e}=c`}, {`0xB_BBBbAbA`, `3149642426`}, + {`"\udFEb"`, `"\udFEb"`}, // bugs {"var a=/\\s?auto?\\s?/i\nvar b;a,b", "var b,a=/\\s?auto?\\s?/i;a,b"}, // #14 diff --git a/js/util.go b/js/util.go index a5c287925..1844ef25d 100644 --- a/js/util.go +++ b/js/util.go @@ -1044,6 +1044,10 @@ func replaceEscapes(b []byte, quote byte, prefix, suffix int) []byte { n += 2 } m := utf8.RuneLen(rune(num)) + if m == -1 { + i++ + continue + } utf8.EncodeRune(b[i+n-m:], rune(num)) n -= m } else if c == '0' && (i+2 == len(b)-1 || b[i+2] < '0' || '7' < b[i+2]) {