dist/Math-BigInt/t/sub_mbi.t Empty subclass test of BigInt
dist/Math-BigInt/t/sub_mif.t Test A & P with subclasses using mbimbf.inc
dist/Math-BigInt/t/trap.t Test whether trap_nan and trap_inf work
+dist/Math-BigInt/t/upgrade2.t Test that two upgrade levels work
dist/Math-BigInt/t/upgradef.t Test if use Math::BigFloat(); under upgrade works
dist/Math-BigInt/t/upgrade.inc Actual tests for upgrade.t
dist/Math-BigInt/t/upgrade.t Test if use Math::BigInt(); under upgrade works
my $class = "Math::BigInt";
use 5.006002;
-$VERSION = '1.96';
+$VERSION = '1.97';
@ISA = qw(Exporter);
@EXPORT_OK = qw(objectify bgcd blcm);
{
$k = $a[0]->new($k);
}
- elsif (!defined $up && ref($k) ne $a[0])
+ elsif (ref($k) ne $a[0] and !defined $up || ref $k ne $up)
{
# foreign object, try to convert to integer
$k->can('as_number') ? $k = $k->as_number() : $k = $a[0]->new($k);
--- /dev/null
+#!/usr/bin/perl -w
+
+# Test 2 levels of upgrade classes. This used to cause a segv.
+
+use Test::More tests => 1;
+
+use Math::BigInt upgrade => 'Math::BigFloat';
+use Math::BigFloat upgrade => 'Math::BigMouse';
+
+no warnings 'once';
+@Math::BigMouse::ISA = 'Math::BigFloat';
+
+() = sqrt Math::BigInt->new(2);
+pass('sqrt on a big int does not segv if there are 2 upgrade levels');
=item *
-C<Math::BigInt> has been upgraded from version 1.95 to 1.96.
+C<Math::BigInt> has been upgraded from version 1.95 to 1.97.
+
+This prevents C<sqrt($int)> from crashing under C<use bigrat;>
+L<[perl #73534]|http://rt.perl.org/rt3//Public/Bug/Display.html?id=73534>.
=item *