Skip to content

Commit

Permalink
Re: [perl #19582] [PATCH bleedperl] bad overload copy constructor seg…
Browse files Browse the repository at this point in the history
…faults

Message-ID: <20030101225459.A2320@cs839290-a.mtth.phub.net.cable.rogers.com>

(Pity the first patch fell through the cracks back then.
 Not that forbidding non-object copy constructors is the right
 thing to do but the bug could use fixing.)

p4raw-id: //depot/perl@21276
  • Loading branch information
Rick Delaney authored and jhi committed Sep 18, 2003
1 parent d1bddb8 commit 29ddfe3
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 2 deletions.
18 changes: 17 additions & 1 deletion lib/overload.t
Expand Up @@ -1087,5 +1087,21 @@ print $@ =~ /zap/ ? "ok 227\n" : "not ok 227\n";

print overload::StrVal(qr/a/) =~ /^Regexp=SCALAR\(0x[0-9a-f]+\)$/ ? "ok 228\n" : "not ok 228\n";

{
package t229;
use overload '=' => sub { 42 },
'++' => sub { my $x = ${$_[0]}; $_[0] };
sub new { my $x = 42; bless \$x }

my $warn;
{
local $SIG{__WARN__} = sub { $warn++ };
my $x = t229->new;
my $y = $x;
eval { $y++ };
}
print $warn ? "not ok 229\n" : "ok 229\n";
}

# Last test is:
sub last {228}
sub last {229}
2 changes: 1 addition & 1 deletion pp.h
Expand Up @@ -385,8 +385,8 @@ See C<PUSHu>.
changed SV* ref to SV* tmpRef */
#define RvDEEPCP(rv) STMT_START { SV* tmpRef=SvRV(rv); \
if (SvREFCNT(tmpRef)>1) { \
SvRV(rv)=AMG_CALLun(rv,copy); \
SvREFCNT_dec(tmpRef); \
SvRV(rv)=AMG_CALLun(rv,copy); \
} } STMT_END

/*
Expand Down

0 comments on commit 29ddfe3

Please sign in to comment.