$ ./reverse
var is narf!
Segmentation fault
Eh? cat reverse.c
#include <EXTERN.h>
#include <perl.h>
static PerlInterpreter *my_perl;
static SV *
do_reverse(x)
SV *x;
{
dSP;
int count;
SV *var;
ENTER; SAVETMPS;
PUSHMARK(SP); XPUSHs(sv_mortalcopy(x)); PUTBACK;
count = perl_call_pv("CORE::reverse", G_SCALAR);
SPAGAIN;
if (count != 1) croak("Aieee!");
var = POPs;
PUTBACK;
FREETMPS;
LEAVE;
}
main (int argc, char **argv, char **env)
{
STRLEN len;
SV *var;
my_perl = perl_alloc();
perl_construct(my_perl);
var = newSVpvf("%s", "narf!");
printf("var is %s\n", SvPV(var, len));
var = do_reverse(sv_2mortal(var));
printf("var is %s\n", SvPV(var, len));
perl_destruct(my_perl);
perl_free(my_perl);
}
According to gdb, it's segfaulting on the perl_call_pv. What am I doing wrong?
(Running perl, v5.6.1, built for i686-linux-multi.)
|