Front page | perl.perl5.porters |
Postings from June 2003
Re: B::Deparse fixes
Thread Previous
|
Thread Next
From:
Alexey Tourbin
Date:
June 10, 2003 07:25
Subject:
Re: B::Deparse fixes
Message ID:
20030610142402.GB20356@solemn.turbinal.org
On Mon, Jun 02, 2003 at 09:39:04PM +0200, Rafael Garcia-Suarez wrote:
> I just fixed this by change #19665.
Hi, thanks. Two more kind of bugs in B::Deparse.
1) easy to reproduce with libnet-1.13/Net/FTP.pm, and I seem to be able
to fix it myself:
--- B/Deparse.pm~ 2003-06-10 15:26:07 +0400
+++ B/Deparse.pm 2003-06-10 18:04:19 +0400
@@ -327,8 +327,9 @@
return unless $self->const_sv($constop)->PV eq $module;
$constop = $constop->sibling;
$version = $self->const_sv($constop);
- if (class($version) ne "PVMG") {
- # version is either an integer or a double
+ if (class($version) eq "NV") {
+ $version = $version->NV;
+ } elsif (class($version) ne "PVMG") {
$version = $version->PV;
} else {
# version specified as a v-string
2) easy to reproduce with Sys/Syslog.pm. It says:
Can't call method "isa" without a package or object reference at
/usr/lib/perl5/i386-linux/B/Deparse.pm line 1095.
As I've tried to track down the problem, I got the following caller()
trace for gv_name():
...
gv=B::GV=SCALAR(0x8355854) B::Deparse /usr/lib/perl5/i386-linux/B/Deparse.pm 2527
gv=B::GV=SCALAR(0x83572e4) B::Deparse /usr/lib/perl5/i386-linux/B/Deparse.pm 2535
gv=B::GV=SCALAR(0x8355890) B::Deparse /usr/lib/perl5/i386-linux/B/Deparse.pm 2527
gv=B::GV=SCALAR(0x8355764) B::Deparse /usr/lib/perl5/i386-linux/B/Deparse.pm 2535
gv=B::GV=SCALAR(0x835ba5c) B::Deparse /usr/lib/perl5/i386-linux/B/Deparse.pm 2527
gv=B::GV=SCALAR(0x83558e4) B::Deparse /usr/lib/perl5/i386-linux/B/Deparse.pm 2527
gv=B::GV=SCALAR(0x835ba5c) B::Deparse /usr/lib/perl5/i386-linux/B/Deparse.pm 2535
gv=B::GV=SCALAR(0x8357170) B::Deparse /usr/lib/perl5/i386-linux/B/Deparse.pm 2527
gv=B::GV=SCALAR(0x835595c) B::Deparse /usr/lib/perl5/i386-linux/B/Deparse.pm 2527
gv=B::GV=SCALAR(0x835ba8c) B::Deparse /usr/lib/perl5/i386-linux/B/Deparse.pm 2527
gv=B::GV=SCALAR(0x8356f9c) B::Deparse /usr/lib/perl5/i386-linux/B/Deparse.pm 2527
gv=B::GV=SCALAR(0x835baa4) B::Deparse /usr/lib/perl5/i386-linux/B/Deparse.pm 2527
gv=B::GV=SCALAR(0x831eeb8) B::Deparse /usr/lib/perl5/i386-linux/B/Deparse.pm 2527
gv=B::GV=SCALAR(0x835bb94) B::Deparse /usr/lib/perl5/i386-linux/B/Deparse.pm 2535
gv=B::GV=SCALAR(0x8355128) B::Deparse /usr/lib/perl5/i386-linux/B/Deparse.pm 2527
gv=B::GV=SCALAR(0x8350c64) B::Deparse /usr/lib/perl5/i386-linux/B/Deparse.pm 2527
gv=24 B::Deparse /usr/lib/perl5/i386-linux/B/Deparse.pm 3703
So the problem seems to be in pp_split, which calls gv_name with the value that
cannot be dereferenced. I wish I could fix this, but I'm not a perl hacker...
Thread Previous
|
Thread Next