From: Alex Lam S.L Date: Mon, 30 Mar 2020 11:13:14 +0000 (+0100) Subject: fix corner case in `evaluate` & `unsafe_math` (#3756) X-Git-Url: https://git.ndcode.org/public/gitweb.cgi?a=commitdiff_plain;h=dc0cd088cf83e222f135c7d06c31f9a104fe1019;p=UglifyJS.git fix corner case in `evaluate` & `unsafe_math` (#3756) fixes #3755 --- diff --git a/lib/compress.js b/lib/compress.js index 343994e7..72690fef 100644 --- a/lib/compress.js +++ b/lib/compress.js @@ -3243,6 +3243,7 @@ merge(Compressor.prototype, { } if (isNaN(result)) return compressor.find_parent(AST_With) ? this : result; if (compressor.option("unsafe_math") + && !ignore_side_effects && result && typeof result == "number" && (this.operator == "+" || this.operator == "-")) { diff --git a/test/compress/evaluate.js b/test/compress/evaluate.js index 6d3adacb..e7f6f7eb 100644 --- a/test/compress/evaluate.js +++ b/test/compress/evaluate.js @@ -2174,3 +2174,19 @@ issue_3738: { } expect_stdout: "Infinity" } + +issue_3755: { + options = { + booleans: true, + evaluate: true, + unsafe: true, + unsafe_math: true, + } + input: { + console.log((/4/.exec(1 + (!0 - 5 / "23")) || 0).p); + } + expect: { + console.log((/4/.exec(!0 - 5 / "23" + 1), 0).p); + } + expect_stdout: "undefined" +}