#!perl
# This is the test case for Bug 56722. This bug was found by Kevin Ryde.
# He also suggested the right fix and supplied the core of the test case.
use strict;
use warnings;
use Test::More tests => 3;
use Data::Dumper;
use lib 't/lib';
use Test::Weaken::Test;
BEGIN {
Test::More::use_ok('Test::Weaken');
}
our $OVERLOAD_CALLS = 0;
package MyOverload;
use Carp;
use overload '+' => \&add;
use overload 'bool' => \&bool;
sub new {
my ( $class, $x ) = @_;
return bless \$x, $class;
}
sub bool { $::OVERLOAD_CALLS++; return 1; }
sub add { $::OVERLOAD_CALLS++; return 0; }
package main;
my $x = MyOverload->new('123');
my $leaks = Test::Weaken::leaks(
sub {
my $y = MyOverload->new('123');
return [ $x, $y ];
}
);
Test::More::ok( $leaks, 'CPAN Bug ID 56722 leaks' );
Test::Weaken::Test::is( $::OVERLOAD_CALLS, 0,
'CPAN Bug ID 56722 no calls to overload functions' );