in reply to Re: Embedding Perl in C -- access to builtins?
in thread Embedding Perl in C -- access to builtins?
That sounds like a good idea.
$ ./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.)
In Section
Seekers of Perl Wisdom