Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ufuzz failure #4570

Closed
alexlamsl opened this issue Jan 18, 2021 · 0 comments · Fixed by #4571
Closed

ufuzz failure #4570

alexlamsl opened this issue Jan 18, 2021 · 0 comments · Fixed by #4571
Labels

Comments

@alexlamsl
Copy link
Collaborator

// original code
// (beautified)
var _calls_ = 10, a = 100, b = 10, c = 0;

{
    var expr1 = b++;
    for (var key1 in expr1) {
        c = 1 + c;
        var b = expr1[key1];
        try {
            if (--b + a++) {
                if (void function() {
                    {
                        var expr5 = (c = c + 1) + (typeof f0 == "function" && --_calls_ >= 0 && f0());
                        for (var [ key5 ] in expr5) {
                            c = 1 + c;
                            var parseInt_1 = expr5[key5];
                            c = c + 1;
                        }
                    }
                    {
                        var brake7 = 5;
                        while (b && b.NaN && --brake7 > 0) {
                        }
                    }
                }()) {} else {
                    0 === 1 ? a : b;
                }
            }
        } catch (Infinity) {
            {
                var brake12 = 5;
                while (a++ + ((c = c + 1) + (typeof Infinity == "function" && --_calls_ >= 0 && Infinity("object", -5)) || a || 3).toString() && --brake12 > 0) {
                    var expr13 = --b + {
                        b: "a",
                        null: typeof Infinity == "function" && --_calls_ >= 0 && Infinity(),
                        a: 25
                    };
                    L19501: for (var key13 in expr13) {
                        c = 1 + c;
                        var bar_1 = expr13[key13];
                        if (typeof f0 == "function" && --_calls_ >= 0 && f0()) {
                            if (/[abc4]/.test(((this && 25) >= [] + "undefined" && (24..toString() == "foo" && this >> -5) || b || 5).toString())) {
                                L19502: for (var brake16 = 5; new function arguments(b_1, arguments, b_2) {
                                    this[this] = ("function" << NaN && -5 === "a", (-0 >= /[a2][^e]+$/) / (b_2 && (b_2.a = "bar" > "function")));
                                    this[typeof "object"] += (this !== 24..toString() && "c" === -1) !== "object" >= 1 > (c = c + 1, 
                                    false);
                                    c = 1 + c, -(1 <= "c" | delete 3);
                                }() && brake16 > 0; --brake16) {
                                    c = c + 1;
                                }
                            }
                        }
                    }
                }
            }
            c = c + 1;
        } finally {
            b++;
            a++ + (b = (c = c + 1) + (b = --b + (typeof f0 == "function" && --_calls_ >= 0 && f0(a++ + (b + 1 - .1 - .1 - .1), /[a2][^e]+$/, [ (c = c + 1) + (b && typeof b.b == "function" && --_calls_ >= 0 && b.b("foo", "object", {})), b && b[c = 1 + c, 
            (-3 > this) * ("a" / 2) | (b = /[a2][^e]+$/ || -4) + (22 - -4)] ]))));
        }
    }
}

switch (a++ + (b = (c = c + 1) + (function(bar_2, NaN_2, a) {
    {
        return b += a;
    }
    {
        var Math;
        var b_2 = b && b[0 === 1 ? a : b], bar_2_2 = !a;
    }
}() ? a++ + (b && typeof b.in == "function" && --_calls_ >= 0 && b.in(--b + (b && typeof b.b == "function" && --_calls_ >= 0 && b.b()), (c = c + 1) + typeof a, a++ + [ a++, (c = c + 1) + {}.length, b && typeof b.NaN == "function" && --_calls_ >= 0 && b.NaN(), a++ + b-- ])) : [ {
    "\t": 0 === 1 ? a : b,
    NaN: typeof b == "function" && --_calls_ >= 0 && b(),
    "-2": (c = c + 1) + {
        a: (c = c + 1) + --b,
        3: a++,
        "": --b + a++,
        0: --b,
        a: --b + (1 === 1 ? a : b)
    }[--b + {
        c: (c = c + 1) + (typeof b == "unknown"),
        0: {
            NaN: (c = 1 + c, "object" >= 25 != ~-1 | (b && (b.undefined = ("number" ^ "undefined") != (NaN === {})))),
            foo: (c = 1 + c, (24..toString() || "function") * ("undefined" | "function") * (~true === ("c" !== -5))),
            b: function() {
            },
            b: b,
            "": (c = 1 + c, (b && (b[1 === 1 ? a : b] = {} === Infinity != (b && (b[c = 1 + c, 
            (this && true) + (1 > -0) === (b && (b[c = 1 + c, ("number" && 2 || ~23..toString()) <= (undefined * "bar" | + -4)] += 4 / 22)) <= (25 < 1)] += "undefined" << "b")))) / (b = 23..toString() / 5 <= ("a" == 3)))
        }[c = 1 + c, this % "" * (5 && 4) || (-1 != "foo") * ("undefined" ^ "function")]
    }[((c = c + 1) + ("bar" in {}) || 1).toString()[/[abc4]/g.exec(((c = 1 + c, ((c = c + 1, 
    NaN) & NaN < [ , 0 ][1]) !== (b && (b.in += ({} ^ "") & Infinity >>> "b"))) || b || 5).toString())]]],
    b: b,
    1.5: NaN
}[a++ + (b = a)], b && b.undefined, typeof f1 == "function" && --_calls_ >= 0 && f1() ][typeof f1 == "function" && --_calls_ >= 0 && f1()]))) {
  case --b + /[abc4]/.test((a++ + ((b && b.length ? (c = c + 1) + delete delete (2 >>> 3 === -2 * 23..toString()) : typeof f0 == "function" && --_calls_ >= 0 && f0(38..toString(), -4, "function")) || a || 3).toString() || b || 5).toString()):
    {
        var a_2 = function f0(await_1) {
            if (--b + {
                undefined: function(undefined) {
                    {
                        var brake29 = 5;
                        while (a++ + (typeof f1 == "function" && --_calls_ >= 0 && f1(...[ (c = 1 + c, await_1 = (({} | "bar") == (3 || 5)) < (-5 << "undefined" | "undefined" << ([ , 0 ].length === 2))), (c = 1 + c, 
                        +((-1 & "a") >> (-4 | 5))) ], (c = 1 + c, (1 != 5) << (2 > ([ , 0 ].length === 2)) != (b && (b[(c = c + 1) + /[abc4]/g.exec(((c = 1 + c, 
                        ([] ^ Infinity || (undefined -= -5 == "b")) >>> ("foo" <= NaN >= (-3 <= "undefined"))) || b || 5).toString())] = ("object" || -3) >>> ("foo" >> 1)))), -5)) && --brake29 > 0) {
                            var foo_2 = (c = 1 + c, (c = c + 1, -4) % ("" & 3) >> (24..toString() >>> 4) + "foo" % 24..toString()), arguments_1 = (c = 1 + c, 
                            ("function" < 25) << (2 !== 0) >>> (("b" | undefined) << (undefined += -0 != 25))), Math_1 = (c = 1 + c, 
                            !(~"b" ^ ([ , 0 ].length === 2) / "number"));
                        }
                    }
                    {
                        return {
                            b: b,
                            foo: (c = 1 + c, "undefined" > -2 | true < 4 || -4 / "bar" && "foo" ^ "c"),
                            ...(c = 1 + c, (("number", -0) && -4 < "undefined") ^ "undefined" >> false <= ("" !== 2)),
                            0: (c = 1 + c, (-0 > undefined == (1 ^ "object")) >>> 23..toString() / 3 % (-1 % -0))
                        };
                    }
                },
                0: 3 in {
                    [1 === 1 ? a : b]: a++ + await_1
                },
                a: --b
            }[b && b[!function() {}()]]) {
                return b && b[(c = c + 1) + (typeof f0 == "function" && --_calls_ >= 0 && f0("number", typeof f1 == "function" && --_calls_ >= 0 && f1(...[ (c = 1 + c, 
                (NaN, 1) != (23..toString() ^ 2) ^ this != {} === true >= "foo"), (c = 1 + c, (5 === "undefined" !== (true && -4)) << ("object" << 5 && ([ , 0 ].length === 2) >> "a")), (c = 1 + c, 
                (c = c + 1, true >> /[a2][^e]+$/) + (false >>> 23..toString() >= (b = 24..toString() + {}))) ], (c = 1 + c, 
                (0 || "b" || ([ , 0 ].length === 2) >= 3) < (await_1 |= "undefined" >= 5 ^ {} - 1)))))];
            }
            {
                var brake33 = 5;
                while (a++ + -b && --brake33 > 0) {
                    (c = c + 1) + (b && b.NaN);
                }
            }
        }((c = c + 1) + ({} in [ (c = c + 1) + (b + 1 - .1 - .1 - .1), [ b && (b[a++ + (b && typeof b.in == "function" && --_calls_ >= 0 && b.in([], (c = 1 + c, 
        (38..toString() < Infinity != (23..toString() & -2)) / ("b" + -3 != (a_2 && (a_2.a += -1 === 3)))), (c = 1 + c, 
        a_2 += (a_2 = (-0 == 22) / (b += {} || -0)) * ("function" * "bar" << ("foo" === true)))))] += (22 < 38..toString() ^ 1 !== []) + (22 / 5 >= "foo" * NaN)) ] ]));
    }
    break;

  default:
  case (c = c + 1) + (typeof f1 == "function" && --_calls_ >= 0 && f1()):
    a++ + (b && b.length);
    try {
        {}
    } catch (b_2) {
        c = c + 1;
        var a_2;
    } finally {
        c = c + 1;
        {
            var brake41 = 5;
            L19503: do {
                var await_2 = (c = c + 1) + (false in {
                    get "\t"() {
                        c = 1 + c, (c = c + 1, 2) - (NaN == -2) || 5 - 4 ^ "a" - 4;
                        {
                            return c = 1 + c, (a_2 += ~-2 | "foo" != -5) <= ("c" != "bar") * (false ^ {});
                        }
                    },
                    b: {
                        undefined: (c = 1 + c, (c = c + 1, /[a2][^e]+$/ == -3) && (-3 && [ , 0 ][1]) >= (a_2 && (a_2.foo >>= 38..toString() + 25))),
                        a: (c = 1 + c, a_2 = (25 > "undefined") - (/[a2][^e]+$/ - -3) & ("b" << null && (undefined || 5))),
                        [(c = 1 + c, (b && (b[[ (c = 1 + c, ("undefined" === NaN ^ (null || 5)) >> (Infinity > 4 ^ 1 >> {})) ]] += 25 * Infinity >> (a_2 && (a_2[c = 1 + c, 
                        ("number" !== "number") / ("object" - this) >> (23..toString() != 2) + (3 ^ null)] += undefined ^ "")))) + 1 % 23..toString() / (-3 / ([ , 0 ].length === 2)))]: (c = 1 + c, 
                        (0 - "" ^ (Infinity || 38..toString())) <= ((24..toString() && 3) ^ -4 <= undefined)),
                        undefined: (c = 1 + c, ("b" !== 23..toString()) * (Infinity || 3) <= (- -3 != (a_2 && (a_2.null /= 1 && 23..toString())))),
                        var: (c = 1 + c, (a_2 && (a_2[c = 1 + c, a_2 && (a_2.NaN |= ("undefined" <= "number") + (b && (b[c = 1 + c, 
                        {} >> "function" ^ (c = c + 1, Infinity), 0 + /[a2][^e]+$/, /[a2][^e]+$/ >= -3] = [] % {})) | ("bar" || -3) ^ (null ^ [ , 0 ][1]))] = 4 && 23..toString())) === [] >= -1 ^ (1 < -1) << /[a2][^e]+$/ / [])
                    }[c = 1 + c, ((3 && -5) ^ -5 + 3) >> (("object" ^ [ , 0 ].length === 2) !== 3 >>> -1)],
                    "-2": b += a
                } || a || 3).toString(), a_1 = a++ + (b |= a);
            } while (--b + (a_1 && a_1[delete -(b && (b.var += ([ , 0 ][1] !== -2, -0 >>> -2)))]) && --brake41 > 0);
        }
    }
    break;

  case function arguments(Math_2, b_1) {
        {
            var brake45 = 5;
            do {
                {
                    var a_2 = function f1(b) {
                        var Infinity_2 = a++ + (b && typeof b.b == "function" && --_calls_ >= 0 && b.b("undefined", ...[], 2)), a_1 = [ a++ + {
                            undefined: (c = 1 + c, (a_2 && (a_2[a++ + ((c = 1 + c, void (b && (b.foo = -1 * -3)) >>> ("number" << [ , 0 ][1] != (b_1 && (b_1[c = 1 + c, 
                            (2 - "bar" || [ , 0 ][1] <= {}) != ((b = ([ , 0 ][1], null)) == "foo" << 25)] = "foo" && -4)))) || 0).toString()[c = 1 + c, 
                            ((c = c + 1, 4) || true ^ -2) !== (arguments && (arguments.foo *= -4 % false), -0 << 22)]] = ([ , 0 ].length === 2) * 38..toString() == ({} ^ 1))) % (38..toString() >= undefined, 
                            "function" << "object")),
                            "-2": (c = 1 + c, ((b_1 && ([ b_1[c = 1 + c, (false * -1 != "a" <= 25) >>> ((2, 
                            38..toString()) << (b_1 && (b_1[c = 1 + c, ("object" ^ -4) >> (b && (b[c = 1 + c, 
                            (a_2 && ([ a_2.c ] = [ (5 & 3, true < -3) ])) + (b_1 && (b_1.NaN ^= (true >= "b") - (c = c + 1, 
                            -0)))] = "number" <= 5)) | 23..toString() !== "bar" & Infinity / "bar"] /= "undefined" == -0)))] ] = [ "object" * 38..toString() ])) < (3 | NaN)) % (-4 === -1 ^ (Infinity ^ -4))),
                            [(c = 1 + c, (b += [ , 0 ][1] - undefined !== 1 >= "function") == ([ , 0 ][1] & undefined ^ "undefined" % 5))]: (c = 1 + c, 
                            (c = c + 1, 25 > false) < (c = c + 1, "bar" >>> -5)),
                            0: (c = 1 + c, (c = c + 1, "number", "function" != "undefined") >>> ("bar" > 23..toString() | ("undefined", 
                            25))),
                            var: (c = 1 + c, ([ , 0 ][1] | 2) % (b_1 && (b_1[c = 1 + c, b && (b.NaN += (5 / "foo" + (arguments && (arguments[c = 1 + c, 
                            (false <= 25 && (b = 22 < null)) ^ 24..toString() * false & 23..toString() !== -4] = [ , 0 ].length === 2 != /[a2][^e]+$/))) / (a_1 += "object" == -1 !== (-3 ^ -2)))] = Infinity && [ , 0 ].length === 2)) === (-0 - [ , 0 ][1] || NaN / Infinity))
                        }, (c = c + 1) + !a, 25 ];
                        {
                            return a++;
                        }
                    }(..."" + a_2, a++ + (b && typeof b.in == "function" && --_calls_ >= 0 && b.in()));
                }
            } while ({
                3: typeof foo_2,
                length: --b + ((("c" && /[a2][^e]+$/) ^ "foo" > "b") & (c = c + 1, NaN) * (true <= 23..toString()))
            } && --brake45 > 0);
        }
        {
            var expr49 = b + 1 - .1 - .1 - .1;
            L19504: for (var key49 in expr49) {
                c = 1 + c;
                var Math = expr49[key49];
                {
                    var brake50 = 5;
                    while (a++ + ~((b && (b.c += /[a2][^e]+$/ < 38..toString())) & (b = (null, "number")) & (arguments *= void /[a2][^e]+$/ + ([ , 0 ].length === 2) / "")) && --brake50 > 0) {
                        var b_2;
                    }
                }
            }
        }
    }:
    {
        var expr52 = b + 1 - .1 - .1 - .1;
        for (var key52 in expr52) {
            c = c + 1;
        }
    }
    break;
}

console.log(null, a, b, c, Infinity, NaN, undefined);
// uglified code
// (beautified)
var key1, _calls_ = 10, a = 100, b = 10, c = 0, expr1 = b++;

for (key1 in expr1) {
    c = 1 + c, b = expr1[key1];
    try {
        --b + a++ && function() {
            var a;
            for ([ a ] in (c += 1) + ("function" == typeof f0 && 0 <= --_calls_ && f0())) {
                c = 1 + c, c += 1;
            }
            for (var n = 5; b && b.NaN && 0 < --n; ) {}
        }();
    } catch (n) {
        for (var brake12 = 5; a++ + ("" + ((c += 1) + ("function" == typeof n && 0 <= --_calls_ && n("object", -5)) || a || 3)) && 0 < --brake12; ) {
            var key13, expr13 = --b + {
                b: "a",
                null: "function" == typeof n && 0 <= --_calls_ && n(),
                a: 25
            };
            for (key13 in expr13) {
                c = 1 + c;
                var bar_1 = expr13[key13];
                if ("function" == typeof f0 && 0 <= --_calls_ && f0() && /[abc4]/.test("" + (b || 5))) {
                    for (var brake16 = 5; new function(a, arguments, b) {
                        this[this] = NaN, this.string += ("24" !== this && !1) != (c += 1, !1), c = 1 + c;
                    }() && 0 < brake16; --brake16) {
                        c += 1;
                    }
                }
            }
        }
        c += 1;
    } finally {
        b++, a++, b = (c += 1) + (b = --b + ("function" == typeof f0 && 0 <= --_calls_ && f0(a++ + (b + 1 - .3), /[a2][^e]+$/, [ (c += 1) + (b && "function" == typeof b.b && 0 <= --_calls_ && b.b("foo", "object", {})), b && b[c = 1 + c, 
        NaN * (this < -3) | (b = /[a2][^e]+$/) + 26] ])));
    }
}

switch (a++ + (b = (c += 1) + (b + void 0 ? a++ + (b && "function" == typeof b.in && 0 <= --_calls_ && b.in(--b + (b && "function" == typeof b.b && 0 <= --_calls_ && b.b()), (c += 1) + typeof a, a++ + [ a++, (c += 1) + {}.length, b && "function" == typeof b.NaN && 0 <= --_calls_ && b.NaN(), a++ + b-- ])) : [ {
    "\t": b,
    NaN: "function" == typeof b && 0 <= --_calls_ && b(),
    "-2": (c += 1) + {
        a: (c += 1) + --b,
        3: a++,
        "": --b + a++,
        0: --b,
        a: --b + a
    }[--b + {
        c: (c += 1) + ("unknown" == typeof b),
        0: {
            NaN: (c = 1 + c, !1 | (b && (b.undefined = !1))),
            foo: 0,
            b: b,
            "": (c = 1 + (1 + c), (b && (b[a] = 0 != (b && (b[c = 1 + c, (this && !0) + !0 === (b && (b[c = 1 + c, 
            !1] += 4 / 22)) <= !1] += 0)))) / (b = !1))
        }[c = 1 + c, this % "" * 4 || 0]
    }[("" + ((c += 1) + ("bar" in {}) || 1))[/[abc4]/g.exec((c = 1 + c, "" + ((!1 & (c += 1, 
    NaN)) !== (b && (b.in += 0)) || b || 5)))]]],
    b: b,
    1.5: NaN
}[a++ + (b = a)], b && b.undefined, "function" == typeof f1 && 0 <= --_calls_ && f1() ]["function" == typeof f1 && 0 <= --_calls_ && f1()]))) {
  case --b + /[abc4]/.test("" + (a++ + ("" + ((b && b.length ? (c += 1) + !0 : "function" == typeof f0 && 0 <= --_calls_ && f0("38", -4, "function")) || a || 3)) || b || 5)):
    var a_2 = function n(f) {
        if (--b + {
            undefined: function(n) {
                for (var e = 5; a++ + ("function" == typeof f1 && 0 <= --_calls_ && f1(f = !1 < (-5 | "undefined" << (2 === [ , 0 ].length)), 0, (c = 1 + (1 + (1 + c)), 
                !0 << ((2 === [ , 0 ].length) < 2) != (b && (b[(c += 1) + /[abc4]/g.exec((c = 1 + c, 
                "" + ((n -= !1) >>> !0 || b || 5)))] = 0))), -5)) && 0 < --e; ) {
                    n += !0, c = 1 + (1 + ((c = 1 + c) + 1));
                }
                return {
                    b: b,
                    foo: 1,
                    ...(c = 1 + (1 + c), 1),
                    0: (c = 1 + c, (n < -0 == 1) >>> NaN)
                };
            },
            0: 3 in {
                [a]: a++ + f
            },
            a: --b
        }[b && b[!0]]) {
            return b && b[(c += 1) + (0 <= --_calls_ && n("number", "function" == typeof f1 && 0 <= --_calls_ && f1(!0 ^ this != {} == 0, 1, 1 + ((b = "24" + {}) <= 0), (c = 1 + ((c = 1 + (1 + (1 + c))) + 1), 
            "b" < (f |= 0)))))];
        }
        for (var e = 5; a++ - b && 0 < --e; ) {
            c += 1, b && b.NaN;
        }
    }((c += 1) + ({} in [ (c += 1) + (b + 1 - .3), [ b && (b[a++ + (b && "function" == typeof b.in && 0 <= --_calls_ && b.in([], (c = 1 + c, 
    !0 / ("b-3" != (a_2 && (a_2.a += !1)))), (c = 1 + c, a_2 += !1 / (b += {}) * 0)))] += 0) ] ]));
    break;

  default:
  case (c += 1) + ("function" == typeof f1 && 0 <= --_calls_ && f1()):
    a++, b && b.length, c += 1;
    var brake41 = 5;
    do {
        var await_2 = (c += 1) + ("" + (!1 in {
            get "\t"() {
                return c = 1 + ((c = 1 + c) + 1), (a_2 += 1) <= 0;
            },
            b: {
                undefined: !1,
                a: a_2 = 0,
                [(c = 1 + (1 + ((c = 1 + c) + 1)), (b && (b[[ (c = 1 + c, 5) ]] += 1 / 0 >> (a_2 && (a_2[c = 1 + c, 
                !1 / ("object" - this) >> 4] += 0)))) + 1 / -3 * (2 === [ , 0 ].length))]: !0,
                undefined: (c = 1 + (1 + c), 1 / 0 <= (3 != (a_2 && (a_2.null /= "23")))),
                var: (c = 1 + c, !0 === (a_2 && (a_2[c = 1 + c, a_2 && (a_2.NaN |= !1 + (b && (b[c = 1 + c, 
                c += 1, !1] = NaN)) | 0)] = "23")) ^ 0)
            }[c = 1 + c, 5 >> (0 != ("object" ^ 2 === [ , 0 ].length))],
            "-2": b += a
        } || a || 3)), a_1 = a++ + (b |= a);
    } while (--b + (a_1 && a_1[b && (b.var += 0), !0]) && 0 < --brake41);
    break;

  case function(n, e) {
        var f, t = 5;
        do {
            var o = function(b) {
                a++, b && "function" == typeof b.b && 0 <= --_calls_ && b.b("undefined", 2);
                var n = [ a++ + {
                    undefined: (c = 1 + c, (o && (o[a++ + (c = 1 + c, ("" + (void (b && (b.foo = 3)) >>> (0 != (e && (e[c = 1 + c, 
                    0 != (0 == (b = null))] = -4))) || 0))[c = 1 + c, c += 1, 4 != (arguments && (arguments.foo *= NaN), 
                    0)])] = "38" * (2 === [ , 0 ].length) == 1)) % 0),
                    "-2": (c = 1 + c, ((e && ([ e[c = 1 + c, !1 >>> ("38" << (e && (e[c = 1 + c, -4 >> (b && (b[c = 1 + c, 
                    (o && ([ o.c ] = [ !1 ])) + (e && (e.NaN ^= !1 - (c += 1, -0)))] = !1)) | 0] /= !1)))] ] = [ NaN ])) < 3) % -4),
                    [0 == (b += !0)]: (c = 1 + (1 + c), !1),
                    0: 0,
                    var: (c = 1 + ((c = 1 + ((c += 1) + 1)) + 1), 2 % (e && (e[c = 1 + c, b && (b.NaN += (NaN + (arguments && (arguments[c = 1 + c, 
                    0 ^ (b = !1)] = 2 === [ , 0 ].length != /[a2][^e]+$/))) / (n += !0))] = 2 === [ , 0 ].length)) === NaN)
                }, (c += 1) + !a, 25 ];
                return a++;
            }(..."" + o, a++ + (b && "function" == typeof b.in && 0 <= --_calls_ && b.in()));
        } while (--b, c += 1, 0 < --t);
        for (f in b + 1 - .3) {
            c = 1 + c;
            for (var i = 5; a++ + ~((b && (b.c += !0)) & (b = "number") & (arguments *= void 0 + (2 === [ , 0 ].length) / "")) && 0 < --i; ) {}
        }
    }:
    var key52, expr52 = b + 1 - .3;
    for (key52 in expr52) {
        c += 1;
    }
}

console.log(null, a, b, c, 1 / 0, NaN, void 0);
original result:
null 107 106 22 Infinity NaN undefined

uglified result:
null 107 106 24 Infinity NaN undefined
// reduced test case (output will differ)

// (beautified)
var b = 0;

b = function(a) {
    return b += a;
}() ? 0 : b;

console.log(b);
// output: NaN
// 
// minify: 0
// 
// options: {
//   "compress": {
//     "passes": 1000000,
//     "sequences": 1000000,
//     "unsafe": true,
//     "unsafe_Function": true,
//     "unsafe_math": true,
//     "unsafe_proto": true,
//     "unsafe_regexp": true
//   },
//   "mangle": {
//     "v8": true
//   },
//   "output": {
//     "v8": true
//   },
//   "validate": true
// }
minify(options):
{
  "compress": {
    "passes": 1000000,
    "sequences": 1000000,
    "unsafe": true,
    "unsafe_Function": true,
    "unsafe_math": true,
    "unsafe_proto": true,
    "unsafe_regexp": true
  },
  "mangle": {
    "v8": true
  },
  "output": {
    "v8": true
  }
}

Suspicious compress options:
  dead_code
  inline
  passes
  unused
@alexlamsl alexlamsl added the bug label Jan 18, 2021
alexlamsl added a commit to alexlamsl/UglifyJS that referenced this issue Jan 18, 2021
alexlamsl added a commit that referenced this issue Jan 19, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant