Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package xpra for openSUSE:Factory checked in at 2021-04-21 21:00:24 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/xpra (Old) and /work/SRC/openSUSE:Factory/.xpra.new.12324 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "xpra" Wed Apr 21 21:00:24 2021 rev:34 rq:887276 version:unknown Changes: -------- --- /work/SRC/openSUSE:Factory/xpra/xpra.changes 2021-04-19 21:06:36.348083923 +0200 +++ /work/SRC/openSUSE:Factory/.xpra.new.12324/xpra.changes 2021-04-21 21:01:08.566366098 +0200 @@ -1,0 +2,23 @@ +Wed Apr 21 10:40:46 UTC 2021 - Luigi Baldoni <aloi...@gmx.com> + +- Update to version 4.1.3 + * fix window geometry constraints being applied wrong + * fix xpra start failures when the display is already running + (with use-display=auto) + * fix vp9 libvpx encoder failures with older library versions + * fix 'xpra top' errors when the version string is missing + * fix server errors when non interactive clients are connected + (ie: 'xpra top') + * fix http server error on incomplete installations + * fix http server builtin script handler + * fix icon loading errors causing empty start menus + * fix compilation against ffmpeg 4.4 and later on some + distributions + * exit more quickly with a failure if the VFB failed to start + * correctly replace existing notifications with the gtk + notifier backend + * silence some rare errors and stacktraces + * support CUDA 11.3 +- Update uglify-js to 3.13.4 + +------------------------------------------------------------------- Old: ---- uglify-js-3.13.3.tgz xpra-4.1.2.tar.xz New: ---- uglify-js-3.13.4.tgz xpra-4.1.3.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ xpra.spec ++++++ --- /var/tmp/diff_new_pack.brjq6E/_old 2021-04-21 21:01:09.162367036 +0200 +++ /var/tmp/diff_new_pack.brjq6E/_new 2021-04-21 21:01:09.166367043 +0200 @@ -17,9 +17,9 @@ # -%define xpra_ver 4.1.2 +%define xpra_ver 4.1.3 %define html5_ver 4.1.2 -%define uglifyjs_ver 3.13.3 +%define uglifyjs_ver 3.13.4 %global __requires_exclude ^typelib\\(GtkosxApplication\\)|typelib\\(GdkGLExt\\)|typelib\\(GtkGLExt\\).*$ Name: xpra Version: %{xpra_ver} @@ -27,7 +27,7 @@ Summary: Remote display server for applications and desktops License: BSD-3-Clause AND GPL-2.0-or-later AND LGPL-3.0-or-later AND MIT URL: https://www.xpra.org/ -Source0: https://xpra.org/src/%{name}-%{version}.tar.xz +Source0: https://xpra.org/src/%{name}-%{version}.tar.gz Source1: xpra-icon.png Source2: https://xpra.org/src/%{name}-html5-%{html5_ver}.tar.xz Source3: https://registry.npmjs.org/uglify-js/-/uglify-js-%{uglifyjs_ver}.tgz ++++++ uglify-js-3.13.3.tgz -> uglify-js-3.13.4.tgz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/package/lib/compress.js new/package/lib/compress.js --- old/package/lib/compress.js 1985-10-26 09:15:00.000000000 +0100 +++ new/package/lib/compress.js 1985-10-26 09:15:00.000000000 +0100 @@ -1866,7 +1866,7 @@ return null; } default: - return; + return handle_custom_scan_order(node, multi_replacer); } } // Replace variable when found @@ -3054,7 +3054,7 @@ }); } - function can_merge_flow(ab) { + function can_drop_abort(ab) { if (ab instanceof AST_Return) return in_lambda && is_return_void(ab.value); if (!(ab instanceof AST_LoopControl)) return false; var lct = compressor.loopcontrol_target(ab); @@ -3063,16 +3063,35 @@ return match_target(lct); } + function can_merge_flow(ab) { + if (!can_drop_abort(ab)) return false; + for (var j = statements.length; --j > i;) { + var stat = statements[j]; + if (stat instanceof AST_DefClass) { + if (stat.name.definition().preinit) return false; + } else if (stat instanceof AST_Const || stat instanceof AST_Let) { + if (!all(stat.definitions, function(defn) { + return !defn.name.match_symbol(function(node) { + return node instanceof AST_SymbolDeclaration && node.definition().preinit; + }); + })) return false; + } + } + return true; + } + function extract_functions() { var defuns = []; + var lexical = false; var tail = statements.splice(i + 1).filter(function(stat) { if (stat instanceof AST_LambdaDefinition) { defuns.push(stat); return false; } + if (is_lexical_definition(stat)) lexical = true; return true; }); - [].push.apply(all(tail, safe_to_trim) ? statements : tail, defuns); + [].push.apply(lexical ? tail : statements, defuns); return tail; } @@ -6937,7 +6956,9 @@ && vars.has(sym.name)) { var def = vars.get(sym.name); if (def.value) break; - def.value = expr.right.clone(); + var value = expr.right; + if (value instanceof AST_Sequence) value = value.clone(); + def.value = value; remove(defs, def); defs.push(def); body.shift(); @@ -8427,16 +8448,19 @@ if (!all(args, function(arg) { return !(arg instanceof AST_Spread); })) return; + var argnames = fn.argnames; var is_iife = fn === exp && !fn.name; if (fn.rest) { if (!(is_iife && compressor.option("rests"))) return; - var insert = fn.argnames.length; + var insert = argnames.length; args = args.slice(0, insert); while (args.length < insert) args.push(make_node(AST_Undefined, call).optimize(compressor)); args.push(make_node(AST_Array, call, { elements: call.args.slice(insert) })); - call.args = args; - fn.argnames = fn.argnames.concat(fn.rest); + argnames = argnames.concat(fn.rest); fn.rest = null; + } else { + args = args.slice(); + argnames = argnames.slice(); } var pos = 0, last = 0; var drop_defaults = is_iife && compressor.option("default_values"); @@ -8452,14 +8476,14 @@ } : return_false; var side_effects = []; for (var i = 0; i < args.length; i++) { - var argname = fn.argnames[i]; + var argname = argnames[i]; if (drop_defaults && argname instanceof AST_DefaultValue && args[i].is_defined(compressor)) { - fn.argnames[i] = argname = argname.name; + argnames[i] = argname = argname.name; } if (!argname || "__unused" in argname) { var node = args[i].drop_side_effect_free(compressor); if (drop_fargs(argname)) { - if (argname) fn.argnames.splice(i, 1); + if (argname) argnames.splice(i, 1); args.splice(i, 1); if (node) side_effects.push(node); i--; @@ -8481,7 +8505,7 @@ } } else if (drop_fargs(argname, args[i])) { var node = args[i].drop_side_effect_free(compressor); - fn.argnames.splice(i, 1); + argnames.splice(i, 1); args.splice(i, 1); if (node) side_effects.push(node); i--; @@ -8493,15 +8517,17 @@ } last = pos; } - for (; i < fn.argnames.length; i++) { - if (drop_fargs(fn.argnames[i])) fn.argnames.splice(i--, 1); + for (; i < argnames.length; i++) { + if (drop_fargs(argnames[i])) argnames.splice(i--, 1); } + fn.argnames = argnames; args.length = last; + call.args = args; if (!side_effects.length) return; var arg = make_sequence(call, side_effects); - args.push(args.length < fn.argnames.length ? make_node(AST_UnaryPrefix, call, { + args.push(args.length < argnames.length ? make_node(AST_UnaryPrefix, call, { operator: "void", - expression: arg + expression: arg, }) : arg); } @@ -9386,6 +9412,7 @@ var seq = lift_sequence_in_expression(self, compressor); if (seq !== self) return seq.optimize(compressor); } + if (compressor.option("unused")) drop_unused_call_args(self, compressor); if (compressor.option("unsafe")) { var exp = self.expression; if (is_undeclared_ref(exp)) { @@ -9667,6 +9694,7 @@ if (node instanceof AST_Sequence) return is_object(node.tail_node()); if (node instanceof AST_SymbolRef) return is_object(node.fixed_value()); return node instanceof AST_Array + || node instanceof AST_Class || node instanceof AST_Lambda || node instanceof AST_New || node instanceof AST_Object; @@ -11457,15 +11485,18 @@ if (prop.key != key) continue; if (!all(props, can_hoist_property)) break; if (!safe_to_flatten(prop.value, compressor)) break; + props = props.map(function(prop) { + return prop.value; + }); + if (prop instanceof AST_ObjectMethod + && prop.value instanceof AST_Function + && !(compressor.parent() instanceof AST_Call)) { + if (prop.value.uses_arguments) break; + props[i] = make_node(AST_Arrow, prop.value, prop.value); + } return make_node(AST_Sub, this, { - expression: make_node(AST_Array, expr, { - elements: props.map(function(prop) { - return prop.value; - }) - }), - property: make_node(AST_Number, this, { - value: i - }) + expression: make_node(AST_Array, expr, { elements: props }), + property: make_node(AST_Number, this, { value: i }), }); } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/package/lib/output.js new/package/lib/output.js --- old/package/lib/output.js 1985-10-26 09:15:00.000000000 +0100 +++ new/package/lib/output.js 1985-10-26 09:15:00.000000000 +0100 @@ -49,8 +49,6 @@ } function OutputStream(options) { - - var readonly = !options; options = defaults(options, { annotations : false, ascii_only : false, @@ -103,12 +101,35 @@ } } - var indentation = options.indent_start; var current_col = 0; var current_line = 1; var current_pos = 0; - var OUTPUT = ""; + var indentation = options.indent_start; + var last; + var line_end = 0; + var line_fixed = true; + var mappings = options.source_map && []; + var mapping_name; + var mapping_token; + var might_need_space; + var might_need_semicolon; + var need_newline_indented = false; + var need_space = false; + var newline_insert = -1; + var stack; + var OUTPUT; + function reset() { + last = ""; + might_need_space = false; + might_need_semicolon = false; + stack = []; + var str = OUTPUT; + OUTPUT = ""; + return str; + } + + reset(); var to_utf8 = options.ascii_only ? function(str, identifier) { if (identifier) str = str.replace(/[\ud800-\udbff][\udc00-\udfff]/g, function(ch) { return "\\u{" + (ch.charCodeAt(0) - 0xd7c0 << 10 | ch.charCodeAt(1) - 0xdc00).toString(16) + "}"; @@ -141,6 +162,25 @@ return j == 0 ? str : s + str.slice(j); }; + function quote_single(str) { + return "'" + str.replace(/\x27/g, "\\'") + "'"; + } + + function quote_double(str) { + return '"' + str.replace(/\x22/g, '\\"') + '"'; + } + + var quote_string = [ + null, + quote_single, + quote_double, + function(str, quote) { + return quote == "'" ? quote_single(str) : quote_double(str); + }, + ][options.quote_style] || function(str, quote, dq, sq) { + return dq > sq ? quote_single(str) : quote_double(str); + }; + function make_string(str, quote) { var dq = 0, sq = 0; str = str.replace(/[\\\b\f\n\r\v\t\x22\x27\u2028\u2029\0\ufeff]/g, function(s, i) { @@ -162,54 +202,11 @@ } return s; }); - function quote_single() { - return "'" + str.replace(/\x27/g, "\\'") + "'"; - } - function quote_double() { - return '"' + str.replace(/\x22/g, '\\"') + '"'; - } - str = to_utf8(str); - switch (options.quote_style) { - case 1: - return quote_single(); - case 2: - return quote_double(); - case 3: - return quote == "'" ? quote_single() : quote_double(); - default: - return dq > sq ? quote_single() : quote_double(); - } - } - - function encode_string(str, quote) { - var ret = make_string(str, quote); - if (options.inline_script) { - ret = ret.replace(/<\x2f(script)([>\/\t\n\f\r ])/gi, "<\\/$1$2"); - ret = ret.replace(/\x3c!--/g, "\\x3c!--"); - ret = ret.replace(/--\x3e/g, "--\\x3e"); - } - return ret; - } - - function make_name(name) { - name = name.toString(); - name = to_utf8(name, true); - return name; + return quote_string(to_utf8(str), quote, dq, sq); } /* -----[ beautification/minification ]----- */ - var has_parens = false; - var line_end = 0; - var line_fixed = true; - var might_need_space = false; - var might_need_semicolon = false; - var need_newline_indented = false; - var need_space = false; - var newline_insert = -1; - var last = ""; - var mapping_token, mapping_name, mappings = options.source_map && []; - var adjust_mappings = mappings ? function(line, col) { mappings.forEach(function(mapping) { mapping.line += line; @@ -257,8 +254,14 @@ var requireSemicolonChars = makePredicate("( [ + * / - , ."); - function print(str) { - str = String(str); + var print = options.beautify + || options.comments + || options.max_line_len + || options.preserve_line + || options.shebang + || !options.semicolons + || options.source_map + || options.width ? function(str) { var ch = str.charAt(0); if (need_newline_indented && ch) { need_newline_indented = false; @@ -328,7 +331,6 @@ } OUTPUT += str; - has_parens = str.slice(-1) == "("; current_pos += str.length; var a = str.split(/\r?\n/), n = a.length - 1; current_line += n; @@ -338,7 +340,30 @@ current_col = a[n].length; } last = str; - } + } : function(str) { + var ch = str.charAt(0); + var prev = last.slice(-1); + if (might_need_semicolon) { + might_need_semicolon = false; + if (prev == ":" && ch == "}" || (!ch || ";}".indexOf(ch) < 0) && prev != ";") { + OUTPUT += ";"; + might_need_space = false; + } + } + if (might_need_space) { + if (is_identifier_char(prev) && (is_identifier_char(ch) || ch == "\\") + || (ch == "/" && ch == prev) + || ((ch == "+" || ch == "-") && ch == last) + || str == "--" && last == "!" + || str == "in" && prev == "/" + || last == "--" && ch == ">") { + OUTPUT += " "; + } + if (prev != "<" || str != "!") might_need_space = false; + } + OUTPUT += str; + last = str; + }; var space = options.beautify ? function() { print(" "); @@ -351,14 +376,12 @@ print(repeat_string(" ", half ? indentation - (options.indent_level >> 1) : indentation)); } : noop; - var with_indent = options.beautify ? function(col, cont) { - if (col === true) col = next_indent(); + var with_indent = options.beautify ? function(cont) { var save_indentation = indentation; - indentation = col; - var ret = cont(); + indentation += options.indent_level; + cont(); indentation = save_indentation; - return ret; - } : function(col, cont) { return cont() }; + } : function(cont) { cont() }; var may_add_newline = options.max_line_len || options.preserve_line ? function() { fix_line(); @@ -387,41 +410,28 @@ print(";"); } - function next_indent() { - return indentation + options.indent_level; - } - function with_block(cont) { - var ret; print("{"); newline(); - with_indent(next_indent(), function() { - ret = cont(); - }); + with_indent(cont); indent(); print("}"); - return ret; } function with_parens(cont) { print("("); may_add_newline(); - //XXX: still nice to have that for argument lists - //var ret = with_indent(current_col, cont); - var ret = cont(); + cont(); may_add_newline(); print(")"); - return ret; } function with_square(cont) { print("["); may_add_newline(); - //var ret = with_indent(current_col, cont); - var ret = cont(); + cont(); may_add_newline(); print("]"); - return ret; } function comma() { @@ -553,15 +563,14 @@ if (OUTPUT.length > insert) newline_insert = insert; } - var stack = []; return { get : get, - toString : get, + reset : reset, indent : indent, - should_break : readonly ? noop : function() { - return options.width && current_col - indentation >= options.width; - }, - has_parens : function() { return has_parens }, + should_break : options.width ? function() { + return current_col - indentation >= options.width; + } : return_false, + has_parens : function() { return last.slice(-1) == "(" }, newline : newline, print : print, space : space, @@ -571,20 +580,21 @@ semicolon : semicolon, force_semicolon : force_semicolon, to_utf8 : to_utf8, - print_name : function(name) { print(make_name(name)) }, - print_string : function(str, quote) { print(encode_string(str, quote)) }, - next_indent : next_indent, + print_name : function(name) { print(to_utf8(name.toString(), true)) }, + print_string : options.inline_script ? function(str, quote) { + str = make_string(str, quote).replace(/<\x2f(script)([>\/\t\n\f\r ])/gi, "<\\/$1$2"); + print(str.replace(/\x3c!--/g, "\\x3c!--").replace(/--\x3e/g, "--\\x3e")); + } : function(str, quote) { + print(make_string(str, quote)); + }, with_indent : with_indent, with_block : with_block, with_parens : with_parens, with_square : with_square, add_mapping : add_mapping, option : function(opt) { return options[opt] }, - prepend_comments: readonly ? noop : prepend_comments, - append_comments : readonly || comment_filter === return_false ? noop : append_comments, - line : function() { return current_line }, - col : function() { return current_col }, - pos : function() { return current_pos }, + prepend_comments: options.comments || options.shebang ? prepend_comments : noop, + append_comments : options.comments ? append_comments : noop, push_node : function(node) { stack.push(node) }, pop_node : options.preserve_line ? function() { var node = stack.pop(); @@ -629,10 +639,19 @@ stream.append_comments(self); } }); + var readonly = OutputStream({ + inline_script: false, + shebang: false, + width: false, + }); AST_Node.DEFMETHOD("print_to_string", function(options) { - var s = OutputStream(options); - this.print(s); - return s.get(); + if (options) { + var stream = OutputStream(options); + this.print(stream); + return stream.get(); + } + this.print(readonly); + return readonly.reset(); }); /* -----[ PARENTHESES ]----- */ @@ -915,7 +934,7 @@ }); function print_braced_empty(self, output) { output.print("{"); - output.with_indent(output.next_indent(), function() { + output.with_indent(function() { output.append_comments(self, true); }); output.print("}"); @@ -1481,11 +1500,7 @@ output.print_string(prop); output.print("]"); } else { - if (expr instanceof AST_Number && expr.value >= 0) { - if (!/[xa-f.)]/i.test(output.last())) { - output.print("."); - } - } + if (expr instanceof AST_Number && !/[ex.)]/i.test(output.last())) output.print("."); output.print("."); // the name after dot would be mapped about here. output.add_mapping(self.end); @@ -1735,7 +1750,7 @@ output.print("`"); }); DEFPRINT(AST_Constant, function(output) { - output.print(this.value); + output.print("" + this.value); }); DEFPRINT(AST_String, function(output) { output.print_string(this.value, this.quote); @@ -1791,7 +1806,7 @@ function force_statement(stat, output) { if (output.option("braces") && !(stat instanceof AST_Const || stat instanceof AST_Let)) { make_block(stat, output); - } else if (!stat || stat instanceof AST_EmptyStatement) { + } else if (stat instanceof AST_EmptyStatement) { output.force_semicolon(); } else { stat.print(output); @@ -1842,11 +1857,11 @@ } function make_block(stmt, output) { - if (!stmt || stmt instanceof AST_EmptyStatement) - output.print("{}"); - else if (stmt instanceof AST_BlockStatement) + if (stmt instanceof AST_EmptyStatement) { + print_braced_empty(stmt, output); + } else if (stmt instanceof AST_BlockStatement) { stmt.print(output); - else output.with_block(function() { + } else output.with_block(function() { output.indent(); stmt.print(output); output.newline(); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/package/lib/parse.js new/package/lib/parse.js --- old/package/lib/parse.js 1985-10-26 09:15:00.000000000 +0100 +++ new/package/lib/parse.js 1985-10-26 09:15:00.000000000 +0100 @@ -351,7 +351,7 @@ function read_while(pred) { var ret = "", ch; - while ((ch = peek()) && pred(ch)) ret += next(); + while ((ch = peek()) && pred(ch, ret)) ret += next(); return ret; } @@ -359,24 +359,27 @@ js_error(err, filename, S.tokline, S.tokcol, S.tokpos); } + function is_octal(num) { + return /^0[0-7_]+$/.test(num); + } + function read_num(prefix) { var has_e = false, after_e = false, has_x = false, has_dot = prefix == "."; - var num = read_while(function(ch) { - var code = ch.charCodeAt(0); - switch (code) { - case 120: case 88: // xX + var num = read_while(function(ch, str) { + switch (ch) { + case "x": case "X": return has_x ? false : (has_x = true); - case 101: case 69: // eE + case "e": case "E": return has_x ? true : has_e ? false : (has_e = after_e = true); - case 43: case 45: // +- + case "+": case "-": return after_e; - case (after_e = false, 46): // . - return (!has_dot && !has_x && !has_e) ? (has_dot = true) : false; + case (after_e = false, "."): + return has_dot || has_e || has_x || is_octal(str) ? false : (has_dot = true); } - return is_digit(code) || /[_0-9a-fo]/i.test(ch); + return /[_0-9a-dfo]/i.test(ch); }); if (prefix) num = prefix + num; - if (/^0[0-7_]+$/.test(num)) { + if (is_octal(num)) { if (next_token.has_directive("use strict")) parse_error("Legacy octal literals are not allowed in strict mode"); } else { num = num.replace(has_x ? /([1-9a-f]|.0)_(?=[0-9a-f])/gi : /([1-9]|.0)_(?=[0-9])/gi, "$1"); @@ -854,7 +857,8 @@ next(); return export_(); case "import": - if (!is_token(peek(), "punc", "(")) { + var token = peek(); + if (!(token.type == "punc" && /^[(.]$/.test(token.value))) { next(); return import_(); } @@ -1185,7 +1189,7 @@ var await = is("name", "await") && next(); expect("("); var init = null; - if (!is("punc", ";")) { + if (await || !is("punc", ";")) { init = is("keyword", "const") ? (next(), const_(true)) : is("keyword", "let") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/package/lib/propmangle.js new/package/lib/propmangle.js --- old/package/lib/propmangle.js 1985-10-26 09:15:00.000000000 +0100 +++ new/package/lib/propmangle.js 1985-10-26 09:15:00.000000000 +0100 @@ -81,7 +81,9 @@ function reserve_quoted_keys(ast, reserved) { ast.walk(new TreeWalker(function(node) { - if (node instanceof AST_ObjectProperty) { + if (node instanceof AST_ClassProperty) { + if (node.start && node.start.quote) add(node.key); + } else if (node instanceof AST_ObjectProperty) { if (node.start && node.start.quote) add(node.key); } else if (node instanceof AST_Sub) { addStrings(node.property, add); @@ -163,6 +165,8 @@ addStrings(node.args[0], add); break; } + } else if (node instanceof AST_ClassProperty) { + if (typeof node.key == "string") add(node.key); } else if (node instanceof AST_Dot) { add(node.property); } else if (node instanceof AST_ObjectProperty) { @@ -193,6 +197,8 @@ mangleStrings(node.args[0]); break; } + } else if (node instanceof AST_ClassProperty) { + if (typeof node.key == "string") node.key = mangle(node.key); } else if (node instanceof AST_Dot) { node.property = mangle(node.property); } else if (node instanceof AST_ObjectProperty) { @@ -222,9 +228,7 @@ } function mangle(name) { - if (!should_mangle(name)) { - return name; - } + if (!should_mangle(name)) return name; var mangled = cache.get(name); if (!mangled) { if (debug) { @@ -236,6 +240,7 @@ if (!mangled) do { mangled = base54(++cname); } while (!can_mangle(mangled)); + if (/^#/.test(name)) mangled = "#" + mangled; cache.set(name, mangled); } return mangled; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/package/lib/scope.js new/package/lib/scope.js --- old/package/lib/scope.js 1985-10-26 09:15:00.000000000 +0100 +++ new/package/lib/scope.js 1985-10-26 09:15:00.000000000 +0100 @@ -273,16 +273,18 @@ return true; } if (node instanceof AST_SymbolDeclaration) { + var def = node.definition(); + def.preinit = def.references.length; if (node instanceof AST_SymbolCatch) { // ensure mangling works if `catch` reuses a scope variable - var def = node.definition().redefined(); - if (def) for (var s = node.scope; s; s = s.parent_scope) { - push_uniq(s.enclosed, def); - if (s === def.scope) break; + var redef = def.redefined(); + if (redef) for (var s = node.scope; s; s = s.parent_scope) { + push_uniq(s.enclosed, redef); + if (s === redef.scope) break; } } else if (node instanceof AST_SymbolConst) { // ensure compression works if `const` reuses a scope variable - var redef = node.definition().redefined(); + var redef = def.redefined(); if (redef) redef.const_redefs = true; } if (node.name != "arguments") return true; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/package/package.json new/package/package.json --- old/package/package.json 1985-10-26 09:15:00.000000000 +0100 +++ new/package/package.json 1985-10-26 09:15:00.000000000 +0100 @@ -3,7 +3,7 @@ "description": "JavaScript parser, mangler/compressor and beautifier toolkit", "author": "Mihai Bazon <mihai.ba...@gmail.com> (http://lisperator.net/)", "license": "BSD-2-Clause", - "version": "3.13.3", + "version": "3.13.4", "engines": { "node": ">=0.8.0" },