# The following was supposedly scribed by
# Sisyphus
# on Monday 13 September 2004 10:47 pm:
>void call_me_stupid(int a, int b) {
> Inline_Stack_Vars;
> Inline_Stack_Reset;
> Inline_Stack_Push(sv_2mortal(newSViv(a)));
> Inline_Stack_Push(sv_2mortal(newSViv(b)));
> Inline_Stack_Done;
> perl_call_pv("main::me_stupid", G_DISCARD);
> Inline_Stack_Void;
>}
void call_me_stupid(int a, int b) {
� � � perl_call_pv("main::me_stupid", G_DISCARD);
}
That works for me running 5.8.4 on Linux (even without the loop.) As
far as I can tell, the stack is involved with the for(1..4) block's
implied $_ variable? No, wait that can't be it. This still gives
the same "1 4" result:
use warnings;
use Inline C => <<'EOC';
void call_me_stupid(int a, int b) {
Inline_Stack_Vars;
Inline_Stack_Reset;
Inline_Stack_Push(sv_2mortal(newSViv(a)));
Inline_Stack_Push(sv_2mortal(newSViv(b)));
Inline_Stack_Done;
perl_call_pv("main::me_stupid", G_DISCARD);
Inline_Stack_Void;
}
EOC
foreach my $i (3..4) {
print "$i: ";
call_me_stupid(3,5);
}
sub me_stupid {
print "$_[0] $_[1]\n";
}
__END__
--Eric
--
"It works better if you plug it in!"
--Sattinger's Law