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 #5350

Closed
alexlamsl opened this issue Feb 12, 2022 · 0 comments · Fixed by #5351
Closed

ufuzz failure #5350

alexlamsl opened this issue Feb 12, 2022 · 0 comments · Fixed by #5351
Labels

Comments

@alexlamsl
Copy link
Collaborator

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

function f0(bar_1) {
    {
        var a_2 = function f1({
            "\t": bar_1,
            Infinity: arguments_1_1,
            [a++ + (0 === 1 ? a : b)]: arguments_1
        }, foo_1, a_1) {
            L10019: for (var brake2 = 5; b++ && brake2 > 0; --brake2) {
                L10020: for (var brake3 = 5; --b + {
                    set 3(b_1) {
                        {
                        }
                        this.c = ((b_1 += 38..toString() !== ([ , 0 ].length === 2)) ^ ("undefined", 
                        3)) === ((arguments_1_1 = -2 ^ [ , 0 ].length === 2) ^ -1 >> this);
                    },
                    undefined: a++ + (b = a)
                } && brake3 > 0; --brake3) {
                    var let_2 = function f2(bar) {
                        if (c = 1 + c, ([] ^ null) / ("b" != "bar") !== ("bar" & 3 ^ [] % Infinity)) {
                            c = 1 + c, (38..toString() >= 0) % (4 ^ 1) | (a_1 += "undefined" === [], 
                            c = c + 1, -2);
                        } else {
                            c = 1 + c, bar_1 && (bar_1.Infinity += (25 << "number" === 0 << null) << ([ , 0 ].length === 2) % "" % (null << "b"));
                        }
                        c = 1 + c, !(c = c + 1, "b" & -4);
                    }();
                }
            }
            try {
            } catch (b_2) {
                {
                    var expr13 = a++ + typeof (a_1 && a_1[[ , (c = 1 + c, (bar_1 && (bar_1.null += "" + -0 !== ("c", 
                    "function"))) - (-1 && undefined) * (-4 || true)), (c = 1 + c, 
                    ((4 & Infinity) !== -3 / /[a2][^e]+$/) > (false % 24..toString() >= 4 << 0)), (c = 1 + c, 
                    (23..toString() ^ /[a2][^e]+$/) / (this || -0) !== "bar" << "number" << 3 + -1) ].then]);
                    for (var key13 in expr13) {
                        c = 1 + c;
                        var bar_1 = expr13[key13];
                        if ((--b + (b >>>= a) || a || 3).toString()) {
                            -4 in {
                                done: (c = 1 + c, "undefined" <= 3 > ("bar" ^ "") >= this << this << (NaN || 0)),
                                done: (c = 1 + c, (-2 && -0) << (-5 | "number") != (-5 ^ -5) >>> ("" | 3)),
                                value: (c = 1 + c, -5 >= -3 > null / -4 >= ("undefined" ^ 4 | true >>> 23..toString()))
                            };
                        }
                    }
                }
            }
        }({
            NaN: [],
            value: null,
            set: 25
        });
    }
    {
        var brake16 = 5;
        while (0 in [ ...[ (c = c + 1) + (bar_1 = a++ + (b = a)), --b, bar_1 ] ] && --brake16 > 0) {
            try {
                try {
                } catch (b_1) {
                    {
                        var bar = function f3(arguments) {
                            {
                                var brake21 = 5;
                                L10021: do {
                                    c = 1 + c, (5 > ([ , 0 ].length === 2)) - ("b" !== 23..toString()) | +[] * ("foo" == -1);
                                } while (--b + {
                                    done: (c = 1 + c, arguments = ("undefined" >= undefined) >>> (a_2 && (a_2.Infinity += (24..toString(), 
                                    -1))) >= (/[a2][^e]+$/ << "b" !== ("function" & NaN))),
                                    set: (c = 1 + c, (NaN < /[a2][^e]+$/ == (arguments && (arguments[c = 1 + c, 
                                    ((c = c + 1, -1) && "" % -0) | 22 + 24..toString() > (-5 !== 0)] ^= Infinity << "b"))) >= (true - 5 === undefined - this)),
                                    0: (c = 1 + c, ("" || 5) >>> ("object" != "b") ^ ("object" && "a") / (1 - ""))
                                }.async && --brake21 > 0);
                            }
                            {
                                var foo_1 = function async_1(b_1_1, foo) {
                                }((c = 1 + c, ((foo_1 = 24..toString() * ([ , 0 ].length === 2)) << (arguments && ({
                                    set: arguments[c = 1 + c, (0 > Infinity ^ -3 > -4) == (arguments && (arguments[c = 1 + c, 
                                    -0 >> "" >> (0 !== 1) === ((/[a2][^e]+$/ && "undefined") ^ 0 / -3)] = [ , 0 ].length === 2 ^ NaN)) >> (foo_1 && (foo_1.NaN = /[a2][^e]+$/ === ""))]
                                } = {
                                    set: "bar" * "function"
                                }))) % ((4 ^ [ , 0 ].length === 2) != (4 !== -3))), 22);
                            }
                        }(NaN, a++ + (typeof f4 == "function" && --_calls_ >= 0 && f4(-1)));
                    }
                    {
                        var brake24 = 5;
                        while ((c = c + 1) + (typeof b != "number") && --brake24 > 0) {
                            switch ((c = c + 1) + /[abc4]/.test(((c = c + 1) + (b = a) || b || 5).toString())) {
                              case typeof bar_1 == "function" && --_calls_ >= 0 && bar_1():
                                ;
                                break;

                              default:
                                var undefined_2 = --b + {
                                    c: (c = 1 + c, ([] % Infinity === (b_1 && (b_1.null += "number" ^ [ , 0 ].length === 2))) <= (23..toString() ^ 0) << undefined * 24..toString()),
                                    "-2": (c = 1 + c, (3 && -0) + ("object" || "bar") == (-1 >>> false && (false && -2))),
                                    length: (c = 1 + c, (38..toString() >> -1 ^ (22, 
                                    Infinity)) === (24..toString() && "number") * (false <= "number"))
                                }.static, a_1 = a++ + !b;

                              case --b + (a_1 || a || 3).toString():
                                {
                                    var expr28 = "a";
                                    for (var key28 in expr28) {
                                        switch (c = 1 + c, b_1 = ("object" << 23..toString() != (38..toString() && "c")) + (([ , 0 ].length === 2 === "a") >>> delete [ , 0 ][1])) {
                                          case c = 1 + c, ("a" / [ , 0 ][1] == "c" > -0) >> (-1 & -4) - ("" == 4):
                                            ;
                                            break;

                                          case c = 1 + c, ("function" == Infinity) * (bar_1 = 0 + -0) & void ("function" || -3):
                                            ;
                                            break;

                                          case c = 1 + c, (c = c + 1, "object" == 22) | [ , 0 ][1] >> ([ , 0 ].length === 2) !== false <= undefined:
                                            ;
                                            break;

                                          case c = 1 + c, (bar && (bar[--b + (b >>>= a)] = 23..toString() > "object" >= "function" % 24..toString())) == (-3 ^ "foo") > "bar" / -1:
                                            ;
                                            break;
                                        }
                                    }
                                }
                                break;

                              case a_2 && typeof a_2.get == "function" && --_calls_ >= 0 && a_2.get(--b + ((c = 1 + c, 
                                (a_1 = (([ , 0 ].length === 2) << null) / ([ , 0 ][1] * undefined)) - (4 << 24..toString() & this == false)) || 9).toString()[c = 1 + c, 
                                3 / "function" === 3 / 22 & (3 | NaN) << NaN - "object"], "number"):
                                switch (a++ + {
                                    set: (c = 1 + c, ("object" << 23..toString()) % (0 == 3) !== ("b" !== []) % ("a" >= "object")),
                                    get: (c = 1 + c, (a_2 >>= 22 / []) % ([] - 4) <= (undefined_2 && (undefined_2[c = 1 + c, 
                                    (23..toString() & "undefined") >> (38..toString() === []) <= (([ , 0 ].length === 2) - 38..toString() && "foo" !== "object")] = (true, 
                                    "c")), "object" === this))
                                }.undefined) {
                                  case --b + typeof (c = 1 + c, (4 > -4 || [] >>> -2) + (false >= "number" <= (undefined_2 = "foo" < 4))):
                                    c = 1 + c, ("bar" || -0 || -2 | "bar") << (-1 >= -0) + ([ , 0 ].length === 2 && []);
                                    c = 1 + c, (-4 << 2 ^ (c = c + 1, "foo")) / ("c" ^ false || 1 != 4);
                                    break;

                                  default:
                                    c = 1 + c, +(25 - 0) >= ("b" == /[a2][^e]+$/ === 0 > "foo");
                                    c = 1 + c, (a_2 && (a_2[c = 1 + c, (c = c + 1, 
                                    "b" << "undefined") && ("" in [] || a_2 && (a_2[c = 1 + c, 
                                    (-([ , 0 ].length === 2) < 4 * 23..toString()) >>> (5 < "bar") - (5 + "object")] >>>= /[a2][^e]+$/ ^ -5))] -= 5 | "object")) !== (a_2 = 0 | "object") == "number" % this >> (1 !== NaN);

                                  case --b + [][c = 1 + c, (bar && (bar[c = 1 + c, 
                                    (undefined ^ -1) * (bar && (bar.async %= /[a2][^e]+$/ * false)) ^ (-5 == 1) < (5, 
                                    [ , 0 ][1])] += "b" !== 5)) % (([ , 0 ].length === 2) * 4) | (bar && (bar.a >>>= ("b" >> 38..toString(), 
                                    NaN, /[a2][^e]+$/)))]:
                                    c = 1 + c, ((c = c + 1, []) || !undefined) >>> ((false >= -2) << (this >> true));
                                    c = 1 + c, (4 * [ , 0 ][1] != (bar_1 && (bar_1.done /= "undefined" !== -2))) < ((bar = {} << 2) != ([ , 0 ].length === 2) % -0);
                                    break;

                                  case a_1 && typeof a_1.async == "function" && --_calls_ >= 0 && a_1.async((c = 1 + c, 
                                    (a_1 && (a_1.a = [] / -4)) >> ("bar" && -0) !== ("object" < 38..toString() & 5 != true))):
                                    c = 1 + c, undefined_2 && (undefined_2[((c = 1 + c, 
                                    ("c" / undefined !== (/[a2][^e]+$/ === false)) + ((-5 | Infinity) ^ -5 === false)) || a || 3).toString()] -= ("a", 
                                    "object") != "number" >>> 24..toString()) || (-2 * 0, 
                                    3 / -1);
                                    break;
                                }
                                {
                                    var brake38 = 5;
                                    L10022: do {
                                        {
                                            var brake39 = 5;
                                            L10023: do {
                                                c = 1 + c, -(undefined_2 %= Infinity % -1 / (2 ^ /[a2][^e]+$/));
                                            } while ((c = 1 + c, (("foo" | /[a2][^e]+$/) < 24..toString() - null) / (null < null ^ ("c" | NaN))) && --brake39 > 0);
                                        }
                                    } while ("c" in [ (c = 1 + c, 38..toString() < 24..toString() > ("b" ^ 1), 
                                    -5 != 23..toString() & -5 == "number"), (c = 1 + c, 
                                    ("undefined" === 23..toString()) >= (25 & 0) !== (c = c + 1, 
                                    "foo" !== -0)) ] && --brake38 > 0);
                                }
                                break;
                            }
                        }
                    }
                }
            } catch (b_1) {
                {
                    return;
                    --b + a++;
                }
                {
                    var brake42 = 5;
                    do {
                        typeof f2 == "function" && --_calls_ >= 0 && f2(3, ..."" + bar_1, ..."" + bar_1);
                    } while (void (3 % -2 <= (24..toString() | 38..toString()) ^ "bar" != "number" === 22 + /[a2][^e]+$/) && --brake42 > 0);
                }
            } finally {
                c = c + 1;
                switch (typeof (a++ + [ --b + a++, ..."" + bar_1, a++ + (() => {
                    c = 1 + c, ((bar_1 && (bar_1[c = 1 + c, (2 == -2) >> (a_2 && ({
                        length: a_2[c = 1 + c, {} * true !== (2 ^ -5), (bar_1 && (bar_1.b += -2 || 24..toString())) < (this | 3)]
                    } = {
                        length: [ , 0 ][1] * "function"
                    })) < ("bar" % 4, null % -0)] = -3 >= -4)) != ("a" && "c")) / (("object" & -5) >= 0 >>> [ , 0 ][1]);
                    c = 1 + c, /[a2][^e]+$/ + 25 != ([ , 0 ].length === 2) <= "undefined" & (bar_1 && (bar_1.undefined += false === 1)) === (a_2 += "number" ^ undefined);
                    c = 1 + c, (a_2 && ([ a_2.value ] = [ [ , 0 ][1] & "" ])) << (null << 38..toString()) <= (4 == [ , 0 ][1] != true >>> "undefined");
                })(1, 2, 0), a++ + --b, bar_1 = --b + (a_2 && typeof a_2.value == "function" && --_calls_ >= 0 && a_2.value("function", 38..toString())) ])) {
                  case --b + -2:
                    break;

                  case --b + new function foo_2(b_1, c_2, a_1) {
                        {
                            var brake49 = 5;
                            do {
                                {
                                    var brake50 = 5;
                                    L10024: do {
                                        continue;
                                    } while (bar_1 && bar_1.b && --brake50 > 0);
                                }
                            } while (a_1 && typeof a_1.undefined == "function" && --_calls_ >= 0 && a_1.undefined((c = 1 + c, 
                            [] % 38..toString() * ("number" + 3) % (("foo" > 23..toString()) * (false & "a"))), (c = 1 + c, 
                            "function" >= "object" >= {} >>> "function" ^ 4 + -2 != ("" && 24..toString()))) && --brake49 > 0);
                        }
                        {
                            return [ (c = 1 + c, ("foo" > {} ^ (c_2 && (c_2.set = -1 ^ [ , 0 ][1]))) % (([ , 0 ][1] - "number") % (22 - true))), (c = 1 + c, 
                            ((25 ^ undefined) == ("a" === [ , 0 ][1])) % ("bar" / 23..toString() < (this & 0))), (c = 1 + c, 
                            b_1 && (b_1[void (("foo", Infinity) << "foo" - "undefined", 
                            "bar" - -0 << (a_1 && (a_1.Infinity = 25 + 22)))] += ((23..toString() || Infinity) >= (-2 !== 1)) << (Infinity - "c") * (this | NaN))) ];
                        }
                    }():
                    for (var brake53 = 5; b++ && brake53 > 0; --brake53) {
                        var expr54 = b + 1 - .1 - .1 - .1;
                        for (var key54 in expr54) {
                            c = 1 + c;
                            var arguments = expr54[key54];
                            {
                                var brake55 = 5;
                                while (--b + (typeof f2 == "function" && --_calls_ >= 0 && f2([])) && --brake55 > 0) {
                                    var arguments_2;
                                }
                            }
                        }
                    }
                    break;

                  default:
                    for (var brake57 = 5; null && brake57 > 0; --brake57) {
                        for (var brake58 = 5; (/[abc4]/g.exec(((c = 1 + c, +[ , 0 ][1] >>> ("number", 
                        undefined) > ("foo" + 2 !== (c = c + 1, ""))) || b || 5).toString()) || 5).toString()[a++ + {
                            ""(bar, Infinity) {
                            },
                            next: (c = 1 + c, (!-1 ^ (4 && 24..toString())) >= ("" >> ([ , 0 ].length === 2)) + ("undefined" ^ "bar")),
                            get: (c = 1 + c, (Infinity << "object" && "object" % 24..toString()) ^ ("a" < 24..toString() ^ -2 >> 2)),
                            [(c = 1 + c, (bar_1 >>>= "c" * 1 - ("bar" | -1)) !== (([ , 0 ].length === 2 || this) != ("undefined" ^ 22)))]: (c = 1 + c, 
                            (22 == true) < (5 === -0) & 25 / -0 >= (2 ^ undefined)),
                            set Infinity(undefined_1) {
                                this.next = -5 | -0;
                            }
                        }] && brake58 > 0; --brake58) {
                            for (var brake59 = 5; a++ + !function() {
                            }() && brake59 > 0; --brake59) {
                                c = c + 1;
                            }
                        }
                    }
                    a++ + (typeof bar_1 == "function" && --_calls_ >= 0 && bar_1``);

                  case {
                        length: a++ + void (0 + "object" + ([] != -1) > (bar_1 && (bar_1.async = (38..toString() && "") <= (false == this)))),
                        3: function Infinity(a_1) {
                            c = 1 + c, (24..toString() | -2) > (true && -5) === (1 || 25) >= ("" != undefined);
                            c = 1 + c, (null / [] == true >> 5) * ((24..toString() == "a") - (null - 25));
                        }
                    }.length ? a++ + ("object" - {} << ({} >>> "a") !== !"bar" * ({} >> "foo")) : ("number" < {} & 2 + 25) <= (false !== -4 & (a_2 && (a_2[c = 1 + c, 
                    bar_1 = (-5 & -3 | 24..toString() != 23..toString()) === ("" || "c") >> (null > 24..toString())] = undefined == NaN))):
                    break;
                }
            }
        }
    }
}

var a_2 = f0(typeof f2 == "function" && --_calls_ >= 0 && f2({
    done: a++ + (a && typeof a.b == "function" && --_calls_ >= 0 && a.b(38..toString(), [ --b + delete (((0, 
    4) > "undefined" % 1) - (-2 % undefined & (-4 && false))), 1 === 1 ? a : b, a++ + ("number" in {
        get: (c = 1 + c, a ^= (4 % ([ , 0 ].length === 2) << (1 < -0), (a = -2 === "foo") < (c = c + 1, 
        24..toString()))),
        3: (c = 1 + c, ("bar" * {}, 4 ^ 24..toString()) <= 22 >> /[a2][^e]+$/ >>> (-0 < true))
    }) ][4], --b + [ typeof f1 == "function" && --_calls_ >= 0 && f1(), --b + [ (c = 1 + c, 
    +(Infinity ^ "bar") | ("undefined" | "function") <= "foo" / 25), (c = 1 + c, 
    a |= (1 << -3 && "function" >>> 25) >>> ((a && (a[c = 1 + c, (-2, 1) - (3 === "c") >> (this << {} ^ 25 - "undefined")] += 22 && -5)) === (a && (a[c = 1 + c, 
    (("" | false) < (a && (a.foo = "number" == false))) * (a && (a[a += (c = 1 + c, 
    ~-0 && "" ^ "function", (a += null === 0) * ("object" + null))] = "c" != "foo" && 1 * -2))] = NaN ^ -1)))), (c = 1 + c, 
    (a && (a.Infinity = ("bar" ^ -3) === (a && (a[c = 1 + c, (3 === "foo" == (1 !== -4)) / ((undefined === false) >= (4 >= null))] <<= 38..toString() / 25)))) < ([ , 0 ].length === 2 !== Infinity, 
    true < 22)), (c = 1 + c, (a = (a += "function" & 4) !== -0 * "undefined") ^ (23..toString() & "object") !== (this !== "number")), (c = 1 + c, 
    a && (a.async = (-4, "object") >>> (-4, "") != ~([ , 0 ].length === 2 || 2))) ].Infinity, (c = c + 1) + delete a ? --b + [ (c = 1 + c, 
    "bar" % 2 !== (this == Infinity) & (a && (a[typeof a == "function" && --_calls_ >= 0 && a("undefined", {})] = (2 ^ 3) / (false * "c")))), , (c = 1 + c, 
    !(25 - -5 < (c = c + 1, this))), (c = 1 + c, Infinity - -0 ^ true < 24..toString(), 
    (a && ([ a.Infinity ] = [ -1 % "b" ])) <= (a += (4, -3))) ][c = 1 + c, a && (a.then = (a |= -4 >> {}, 
    -0 >>> 1)) || a && (a.Infinity <<= "a" >> "" & -"undefined")] : --b + /[abc4]/.test(((c = 1 + c, 
    (a && (a.then = "" | "bar")) * (true > -1) === (a = (-1 | [ , 0 ].length === 2) - ({} <= "number"))) || b || 5).toString()), --b + (0 === 1 ? a : b), {
        a: a,
        b: (c = 1 + c, (25 < 2) + (a && ([ a.next ] = [ "number" + "" ])) == ("a" > true ^ 5 << ([ , 0 ].length === 2)))
    }[--b + ((c = 1 + c, (a && (a[--b + (typeof b_1 === "object")] = (NaN >>> -3) * (-3 > 38..toString()))) === (25 <= "undefined" != undefined < this)) ? (c = 1 + c, 
    (c = c + 1, 3 % 2) === (([ , 0 ].length === 2) - -0 | "object" >>> {})) : (c = 1 + c, 
    ((5 || {}) != ([], 5)) - ("number" << "undefined") / (null >= 23..toString())))] ].a)),
    done: a++ + /[abc4]/.test((typeof f2 == "function" && --_calls_ >= 0 && f2(null) || b || 5).toString())
}[1 === 1 ? a : b]), 1);

console.log(null, a, b, c, Infinity, NaN, undefined);
// uglified code
// (beautified)
var u = 10, a = 100, c = 10, g = 0;

(function(o) {
    for (var n = function f1({
        "\t": t,
        [a++ + c]: n
    }, i, e) {
        for (var f = 5; c++ && 0 < f; --f) {
            for (var o = 5; --c + {
                set 3(n) {
                    this.c = (3 ^ (n += 38..toString() !== (2 === [ , 0 ].length))) == (-2 ^ 2 === [ , 0 ].length ^ -1 >> this);
                },
                undefined: a++ + (c = a)
            } && 0 < o; --o) {
                (function f2(n) {
                    g = 1 + g, (null ^ []) / !0 != (0 ^ [] % Infinity) ? (g = 1 + g, 
                    38..toString(), g += 1) : (g = 1 + g, t && (t.Infinity += !1 << (2 === [ , 0 ].length) % "" % 0)), 
                    g = 1 + g, g += 1;
                })();
            }
        }
    }({
        NaN: [],
        value: null,
        set: 25
    }), t = 5; 0 in [ (g += 1) + (o = a++ + (c = a)), --c, o ] && 0 < --t; ) {
        switch (g += 1, typeof (a++ + [ --c + a++, ..."" + o, a++ + (g = 1 + g, 
        o && (o[g = 1 + g, !1 >> (n && ({
            length: n[g = 1 + g, (o && (o.b += -2)) < (3 | this)]
        } = {
            length: NaN
        })) < NaN] = !0), g = 1 + g, o && (o.undefined += !1), n += "number" ^ undefined, 
        g = 1 + g, n && ([ n.value ] = [ 0 ]), void 38..toString()), a++ + --c, o = --c + (n && "function" == typeof n.value && 0 <= --u && n.value("function", 38..toString())) ])) {
          case --c - 2:
            break;

          case --c + new function(n, t, i) {
                var e = 5;
                do {
                    for (var f = 5; o && o.b && 0 < --f; ) {}
                } while (i && "function" == typeof i.undefined && 0 <= --u && i.undefined((g = 1 + g, 
                [] % 38..toString() * "number3" % (0 * (23..toString() < "foo"))), (g = 1 + g, 
                {} >>> "function" <= !1 ^ !0)) && 0 < --e);
                return [ (g = 1 + g, ({} < "foo" ^ (t && (t.set = -1))) % NaN), (g = 1 + g, 
                (0 == (25 ^ undefined)) % ("bar" / 23..toString() < (0 & this))), (g = 1 + g, 
                n && (n[Infinity, void (i && (i.Infinity = 47))] += (!0 <= (23..toString() || Infinity)) << (Infinity - "c") * (this | NaN))) ];
            }():
            for (var i = 5; c++ && 0 < i; --i) {
                var e, f = c + 1 - .1 - .1 - .1;
                for (e in f) {
                    g = 1 + g;
                    for (var r = 5; --c + ("function" == typeof f2 && 0 <= --u && f2([])) && 0 < --r; ) {}
                }
            }
            break;

          default:
            a++, "function" == typeof o && 0 <= --u && o``;

          case a++, o && (o["async"] = (38..toString() && "") <= (0 == this)), function Infinity(n) {
                g = 1 + g, 24..toString(), undefined, g = 1 + g, 24..toString();
            }, a++ + ("object" - {} << ({} >>> "a") != !1 * ({} >> "foo")):
        }
    }
})("function" == typeof f2 && 0 <= --u && f2({
    done: a++ + (a && "function" == typeof a.b && 0 <= --u && a.b(38..toString(), [ --c + (undefined, 
    !0), a, a++ + ("number" in {
        get: (g = 1 + g, a ^= (a = !1) < (g += 1, 24..toString())),
        3: (g = 1 + g, (4 ^ 24..toString()) <= 11)
    }) ][4], --c + [ "function" == typeof f1 && 0 <= --u && f1(), --c + [ (g = 1 + g, 
    !1 | +("bar" ^ Infinity)), (g = 1 + g, a |= 0 >>> ((a && (a[g = 1 + g, 1 >> (this << {} ^ NaN)] += -5)) === (a && (a[g = 1 + g, 
    (0 < (a && (a.foo = !1))) * (a && (a[a += (g = 1 + g, "objectnull" * (a + !1))] = -2))] = -1 ^ NaN)))), (g = 1 + g, 
    (a && (a.Infinity = -3 === (a && (a[g = 1 + g, !1 / (!0 <= (!1 === undefined))] <<= 38..toString() / 25)))) < (Infinity, 
    !0)), (g = 1 + g, (a = a + 0 !== NaN) ^ ("object" & 23..toString()) !== ("number" !== this)), (g = 1 + g, 
    a && (a["async"] = 0 != ~(2 === [ , 0 ].length || 2))) ].Infinity, (g += 1) + delete a ? --c + [ (g = 1 + g, 
    NaN !== (this == Infinity) & (a && (a["function" == typeof a && 0 <= --u && a("undefined", {})] = NaN))), , (g = 1 + g, 
    !(30 < this)), (g = 1 + (g += 1), Infinity, 24..toString(), (a && ([ a.Infinity ] = [ NaN ])) <= (a += -3)) ][g = 1 + g, 
    a && (a.then = (a |= -4 >> {}, 0)) || a && (a.Infinity <<= 0)] : --c + /[abc4]/.test((g = 1 + g, 
    (!0 * (a && (a.then = 0)) == (a = (-1 | 2 === [ , 0 ].length) - ({} <= "number")) || c || 5).toString())), --c + c, {
        a: a,
        b: (g = 1 + g, !1 + (a && ([ a.next ] = [ "number" ])) == (!1 ^ 5 << (2 === [ , 0 ].length)))
    }[--c + (g = 1 + g, (a && (a[--c + ("object" == typeof b_1)] = (NaN >>> -3) * (38..toString() < -3))) === (0 != undefined < this) ? (g = 1 + g, 
    g += 1, 1 == ((2 === [ , 0 ].length) - -0 | "object" >>> {})) : (g = 1 + g, 
    !1 - 0 / (23..toString() <= null)))] ].a)),
    done: a++ + /[abc4]/.test(("function" == typeof f2 && 0 <= --u && f2(null) || c || 5).toString())
}[a]), 1);

console.log(null, a, c, g, Infinity, NaN, undefined);
original result:
null 160 159 137 Infinity NaN undefined

uglified result:
null 164 163 137 Infinity NaN undefined
// reduced test case (output will differ)

// (beautified)
var a = 0;

({
    length: 0,
    3: function Infinity() {}
}).length ? a++ : 0;

console.log(a, Infinity);
// output: 0 Infinity
// 
// minify: 1 Infinity
// 
// options: {
//   "ie": true,
//   "toplevel": true,
//   "mangle": {
//     "v8": true
//   },
//   "output": {
//     "v8": true
//   },
//   "validate": true
// }
minify(options):
{
  "ie": true,
  "toplevel": true,
  "mangle": {
    "v8": true
  },
  "output": {
    "v8": true
  }
}

Suspicious compress options:
  properties
  side_effects

Suspicious options:
  ie
@alexlamsl alexlamsl added the bug label Feb 12, 2022
alexlamsl added a commit to alexlamsl/UglifyJS that referenced this issue Feb 12, 2022
alexlamsl added a commit that referenced this issue Feb 12, 2022
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