It ouptuts, for me:use warnings; use Inline C => Config => BUILD_NOISY => 1; use Inline C => <<'EOC'; void call_Subtract(int a , int b) { dSP; int count; ENTER; SAVETMPS; PUSHMARK(SP); XPUSHs(sv_2mortal(newSViv(a))); XPUSHs(sv_2mortal(newSViv(b))); PUTBACK; printf("PL_errgv2 = %p\n", PL_errgv); //count = call_pv("Subtract", G_EVAL|G_SCALAR); count = call_pv("Subtract", G_SCALAR); SPAGAIN; printf("PL_errgv3 = %p\n", PL_errgv); /* Check the eval first */ if (SvTRUE(ERRSV)) /* crashes here */ { STRLEN n_a; printf ("Uh oh - %s\n", SvPV(ERRSV, n_a)); POPs; } else { if (count != 1) croak("call_Subtract: wanted 1 value from 'Subtract', g +ot %d\n", count); printf ("%d - %d = %d\n", a, b, POPi); } PUTBACK; FREETMPS; LEAVE; } EOC call_Subtract(25, 12); sub Subtract { my $ret = $_[0] - $_[1]; return $ret; }
Cheers,PL_errgv2 = 002E3F20 PL_errgv3 = 002E3F20 25 - 12 = 13
In reply to Re: SvTRUE(ERRSV) crsahes in Perl 5.10
by syphilis
in thread SvTRUE(ERRSV) crsahes in Perl 5.10
by mcaisuca
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |