Test croak(NULL)
Gisle Aas [Tue, 21 Mar 2006 10:16:43 +0000 (10:16 +0000)]
p4raw-id: //depot/perl@27560

ext/XS/APItest/APItest.xs
ext/XS/APItest/t/exception.t

index c8391c6..3a31ec9 100644 (file)
@@ -461,10 +461,15 @@ exception(throw_e)
         RETVAL
 
 void
-mycroak(pv)
-    const char* pv
+mycroak(sv)
+    SV* sv
     CODE:
-    Perl_croak(aTHX_ "%s", pv);
+    if (SvOK(sv)) {
+        Perl_croak(aTHX_ "%s", SvPV_nolen(sv));
+    }
+    else {
+       Perl_croak(aTHX_ NULL);
+    }
 
 SV*
 strtab()
index 5341589..dc6d324 100644 (file)
@@ -9,7 +9,7 @@ BEGIN {
     }
 }
 
-use Test::More tests => 9;
+use Test::More tests => 12;
 
 BEGIN { use_ok('XS::APItest') };
 
@@ -32,5 +32,10 @@ is($@, "boo\n");
 ok(not defined $rv);
 is($XS::APItest::exception_caught, 1);
 
-$rv = eval { mycroak("foobar\n") };
+$rv = eval { mycroak("foobar\n"); 1 };
 is($@, "foobar\n", 'croak');
+ok(not defined $rv);
+
+$rv = eval { $@ = bless{}, "foo"; mycroak(undef); 1 };
+is(ref($@), "foo", 'croak(NULL)');
+ok(not defined $rv);