call_sv()の戻り値を正確に把握していないがために、Xslate で厄介なバグを引き起こしてしまった*1。具体的には、call_sv()でG_VOIDを指定すると常に1を返すと思い込んでいた。しかし、それは間違いだった。 検証: https://github.com/gfx/p5-XS-CallSV #!perl -w use strict; use Test::More; use B qw(/^G_/); use XS::SvCallTest; sub empty_pp { } sub return_empty_pp { return } sub return2_pp { return(10, 20) } sub fatal { die } note 'G_VOID'; is call_sv(\&empty_pp, G_VOID), 0; is call_sv(\&return_e