#include "EXTERN.h"
#include "perl.h"
#define NO_XSLOCKS
#include "XSUB.h"
static void throws_exception(int throw_e)
{
if (throw_e)
croak("boo\n");
}
/* Don't give this the same name as execution() in ext/Devel/PPPort/module3.c
as otherwise building entirely statically will cause a test to fail, as
PPPort's execption() gets used in place of this one. */
int apitest_exception(int throw_e)
{
dTHR;
dXCPT;
SV *caught = get_sv("XS::APItest::exception_caught", 0);
XCPT_TRY_START {
throws_exception(throw_e);
} XCPT_TRY_END
XCPT_CATCH
{
sv_setiv(caught, 1);
XCPT_RETHROW;
}
sv_setiv(caught, 0);
return 42;
}