From e5f6a882333cf0dcaf87e2a58dfa2867106114e9 Mon Sep 17 00:00:00 2001 From: "Alex Lam S.L" Date: Sun, 8 Apr 2018 02:29:37 +0800 Subject: [PATCH] fix corner case in reuse of `mangle` options (#3062) --- lib/scope.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/scope.js b/lib/scope.js index 2c325f68c0..c3a7774612 100644 --- a/lib/scope.js +++ b/lib/scope.js @@ -344,7 +344,7 @@ function next_mangled_name(scope, options, def) { } while (true) { name = base54(++scope.cname); - if (in_use[name] || !is_identifier(name) || options._reserved[name]) continue; + if (in_use[name] || !is_identifier(name) || options.reserved.has[name]) continue; if (!names[name]) break; holes.push(scope.cname); } @@ -387,7 +387,7 @@ function _default_mangler_options(options) { if (!Array.isArray(options.reserved)) options.reserved = []; // Never mangle arguments push_uniq(options.reserved, "arguments"); - options._reserved = makePredicate(options.reserved); + options.reserved.has = makePredicate(options.reserved); return options; } @@ -453,7 +453,7 @@ AST_Toplevel.DEFMETHOD("mangle_names", function(options){ redefined.forEach(mangle); function mangle(def) { - if (options._reserved[def.name]) return; + if (options.reserved.has[def.name]) return; def.mangle(options); } }); @@ -504,7 +504,7 @@ AST_Toplevel.DEFMETHOD("expand_names", function(options) { function rename(def) { if (def.global && options.cache) return; if (def.unmangleable(options)) return; - if (options._reserved[def.name]) return; + if (options.reserved.has[def.name]) return; var d = def.redefined(); def.name = d ? d.name : next_name(); def.orig.forEach(function(sym) {