Author Topic: Perl 5.24.0 and nested declarations in Gmusicbrowser  (Read 345 times)

tacvbo

  • Newbie
  • *
  • Posts: 1
    • View Profile
Perl 5.24.0 and nested declarations in Gmusicbrowser
« on: May 29, 2016, 09:50:47 »
I just updated to Perl 5.24.0 and found that Gmusicbrowser doesn't work on it because two nested declarations within the code.

The problem is:

./gmusicbrowser
Can't redeclare "my" in "my" at /usr/bin/../share/gmusicbrowser/gmusicbrowser_list.pm line 8001, at end of line
Compilation failed in require at /usr/bin/gmusicbrowser line 440.
BEGIN failed--compilation aborted at /usr/bin/gmusicbrowser line 473.

I did this changes:

--- /usr/bin/../share/gmusicbrowser/gmusicbrowser_list.pm.bk
2016-05-28 23:35:21.793720205 -0500
+++ /usr/bin/../share/gmusicbrowser/gmusicbrowser_list.pm 2016-05-28
23:35:49.329718977 -0500
@@ -7998,7 +7998,7 @@
  unless ($notnow)
  { #warn "$key ---found in ($code,@deps)\n";
  if (ref $code)
- { my ($func,my @keys)=@$code; #warn " -> ($func, @keys)\n";
+ { my ($func, @keys)=@$code; #warn " -> ($func, @keys)\n";
  my $out=join ',',map "'$_'", @keys;
  my $in= join ',',map "'$_'", @deps; $in=~s#\?##g;
  $out= @keys>1 ? "\@var{$out}" : "\$var{$out}";



--- /usr/bin/gmusicbrowser.bk 2016-05-28 23:35:34.641719632 -0500
+++ /usr/bin/gmusicbrowser 2016-05-28 23:36:16.993717744 -0500
@@ -8977,7 +8977,7 @@

  ($cmd,my $pattern)= split /:/,$cmd,2;
  $pattern='' unless defined $pattern;
- my ($basecmd,my $prop)= Songs::filter_properties($field,"$cmd:$pattern");
+ my ($basecmd, $prop)= Songs::filter_properties($field,"$cmd:$pattern");
  if (!$prop)
  { $cmd=  Songs::Field_property($field,'default_filter');
  ($basecmd,$prop)= Songs::filter_properties($field,$cmd);


it works but I don't know if its a proper fix.

It's based on what I found here

https://rt.perl.org/Public/Bug/Display.html?id=125587
https://rt.perl.org/Public/Bug/Display.html?id=125587
http://search.cpan.org/~rjbs/perl-5.24.0/pod/perldiag.pod

Can't redeclare "%s" in "%s"
(F) A "my", "our" or "state" declaration was found within another
declaration, such as my ($x, my($y), $z) or our (my $x).