Package: libsub-uplevel-perl
Version: 0.09-2
Severity: serious
Tags: patch

The unexpected verbosity of this package is responsible for #356829,
which is a RC bug. As it's used in test cases where the output is
searched for warnings and errors.

It seems that this bug spawned with a fix in the warnings pragma of
perl, introduced in 5.8.8, which prevented it from surfacing before.
In http://rt.cpan.org/Public/Bug/Display.html?id=17637 this is
explained.

Also, in http://rt.cpan.org/Ticket/Display.html?id=13893 is described a
possible off-by-one bug in the same subroutines, but I cannot assert
this.

The patch is very simple:

--- /usr/share/perl5/Sub/Uplevel.pm     2006-04-17 01:37:09.000000000 -0300
+++ /usr/share/perl5/Sub/Uplevel.pm.new 2006-04-17 01:48:28.000000000 -0300
@@ -120,7 +120,7 @@
         # Yes, we need a C style for loop here since $height changes
         for( my $up = 1;  $up <= $height + 1;  $up++ ) {
             my @caller = CORE::caller($up);
-            if( $caller[0] eq __PACKAGE__ ) {
+            if( defined($caller[0]) && $caller[0] eq __PACKAGE__ ) {
                 $height++;
                 $height += $Up_Frames unless $saw_uplevel;
                 $saw_uplevel = 1;


-- System Information:
Debian Release: testing/unstable
  APT prefers testing
  APT policy: (900, 'testing')
Architecture: i386 (i686)
Shell:  /bin/sh linked to /bin/bash
Kernel: Linux 2.6.12-1-686
Locale: LANG=es_AR.UTF-8, LC_CTYPE=es_AR.UTF-8 (charmap=UTF-8)

Versions of packages libsub-uplevel-perl depends on:
ii  perl                          5.8.8-3    Larry Wall's Practical Extraction 

libsub-uplevel-perl recommends no packages.

-- no debconf information
--- /usr/share/perl5/Sub/Uplevel.pm     2006-04-17 01:37:09.000000000 -0300
+++ /usr/share/perl5/Sub/Uplevel.pm.new 2006-04-17 01:48:28.000000000 -0300
@@ -120,7 +120,7 @@
         # Yes, we need a C style for loop here since $height changes
         for( my $up = 1;  $up <= $height + 1;  $up++ ) {
             my @caller = CORE::caller($up);
-            if( $caller[0] eq __PACKAGE__ ) {
+            if( defined($caller[0]) && $caller[0] eq __PACKAGE__ ) {
                 $height++;
                 $height += $Up_Frames unless $saw_uplevel;
                 $saw_uplevel = 1;

Reply via email to