From: Jarkko Hietaniemi <jhi@iki.fi>
Date: Sat, 27 Jan 2001 04:17:24 +0000 (+0000)
Subject: Forgot from #8545.  Oops.
X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=78f67eb5ee42ac6b16274177e3472ab2362e0fbf;p=p5sagit%2Fp5-mst-13.2.git

Forgot from #8545.  Oops.

p4raw-id: //depot/perl@8561
---

diff --git a/pp.c b/pp.c
index d9b0685..bbb6b82 100644
--- a/pp.c
+++ b/pp.c
@@ -2576,7 +2576,7 @@ PP(pp_sqrt)
 
 PP(pp_int)
 {
-    djSP; dTARGET;
+    djSP; dTARGET; tryAMAGICun(int);
     {
       NV value;
       IV iv = TOPi; /* attempt to convert to IV if possible. */
diff --git a/t/pragma/overload.t b/t/pragma/overload.t
index bf24c07..2cf937b 100755
--- a/t/pragma/overload.t
+++ b/t/pragma/overload.t
@@ -970,6 +970,38 @@ unless ($aaa) {
     test($a =~ /^`1' is not a code reference at/); # 215
 }
 
+{
+  my $c = 0;
+  package ov_int1;
+  use overload '""'    => sub { 3+shift->[0] },
+               '0+'    => sub { 10+shift->[0] },
+               'int'   => sub { 100+shift->[0] };
+  sub new {my $p = shift; bless [shift], $p}
+
+  package ov_int2;
+  use overload '""'    => sub { 5+shift->[0] },
+               '0+'    => sub { 30+shift->[0] },
+               'int'   => sub { 'ov_int1'->new(1000+shift->[0]) };
+  sub new {my $p = shift; bless [shift], $p}
+
+  package noov_int;
+  use overload '""'    => sub { 2+shift->[0] },
+               '0+'    => sub { 9+shift->[0] };
+  sub new {my $p = shift; bless [shift], $p}
+
+  package main;
+
+  my $x = new noov_int 11;
+  my $int_x = int $x;
+  main::test("$int_x" eq 20);			# 216
+  $x = new ov_int1 31;
+  $int_x = int $x;
+  main::test("$int_x" eq 131);			# 217
+  $x = new ov_int2 51;
+  $int_x = int $x;
+  main::test("$int_x" eq 1054);			# 218
+}
+
 # make sure that we don't inifinitely recurse
 {
   my $c = 0;
@@ -979,10 +1011,12 @@ unless ($aaa) {
                'bool'  => sub { shift },
                fallback => 1;
   my $x = bless([]);
-  main::test("$x" =~ /Recurse=ARRAY/);		# 216
-  main::test($x);                               # 217
-  main::test($x+0 =~ /Recurse=ARRAY/);		# 218
-};
+  main::test("$x" =~ /Recurse=ARRAY/);		# 219
+  main::test($x);                               # 220
+  main::test($x+0 =~ /Recurse=ARRAY/);		# 221
+}
+
+
 
 # Last test is:
-sub last {218}
+sub last {221}