|
Packit |
7d6a7d |
/*******************************************************************************
|
|
Packit |
7d6a7d |
*
|
|
Packit |
7d6a7d |
* Perl/Pollution/Portability
|
|
Packit |
7d6a7d |
*
|
|
Packit |
7d6a7d |
********************************************************************************
|
|
Packit |
7d6a7d |
*
|
|
Packit |
7d6a7d |
* Version 3.x, Copyright (C) 2004-2013, Marcus Holland-Moritz.
|
|
Packit |
7d6a7d |
* Version 2.x, Copyright (C) 2001, Paul Marquess.
|
|
Packit |
7d6a7d |
* Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
|
|
Packit |
7d6a7d |
*
|
|
Packit |
7d6a7d |
* This program is free software; you can redistribute it and/or
|
|
Packit |
7d6a7d |
* modify it under the same terms as Perl itself.
|
|
Packit |
7d6a7d |
*
|
|
Packit |
7d6a7d |
*******************************************************************************/
|
|
Packit |
7d6a7d |
|
|
Packit |
7d6a7d |
#include "EXTERN.h"
|
|
Packit |
7d6a7d |
#include "perl.h"
|
|
Packit |
7d6a7d |
|
|
Packit |
7d6a7d |
#define NEED_PL_parser
|
|
Packit |
7d6a7d |
#define NO_XSLOCKS
|
|
Packit |
7d6a7d |
#include "XSUB.h"
|
|
Packit |
7d6a7d |
|
|
Packit |
7d6a7d |
#include "ppport.h"
|
|
Packit |
7d6a7d |
|
|
Packit |
7d6a7d |
static void throws_exception(int throw_e)
|
|
Packit |
7d6a7d |
{
|
|
Packit |
7d6a7d |
if (throw_e)
|
|
Packit |
7d6a7d |
croak("boo\n");
|
|
Packit |
7d6a7d |
}
|
|
Packit |
7d6a7d |
|
|
Packit |
7d6a7d |
int exception(int throw_e)
|
|
Packit |
7d6a7d |
{
|
|
Packit |
7d6a7d |
dTHR;
|
|
Packit |
7d6a7d |
dXCPT;
|
|
Packit |
7d6a7d |
SV *caught = get_sv("Devel::PPPort::exception_caught", 0);
|
|
Packit |
7d6a7d |
|
|
Packit |
7d6a7d |
XCPT_TRY_START {
|
|
Packit |
7d6a7d |
throws_exception(throw_e);
|
|
Packit |
7d6a7d |
} XCPT_TRY_END
|
|
Packit |
7d6a7d |
|
|
Packit |
7d6a7d |
XCPT_CATCH
|
|
Packit |
7d6a7d |
{
|
|
Packit |
7d6a7d |
sv_setiv(caught, 1);
|
|
Packit |
7d6a7d |
XCPT_RETHROW;
|
|
Packit |
7d6a7d |
}
|
|
Packit |
7d6a7d |
|
|
Packit |
7d6a7d |
sv_setiv(caught, 0);
|
|
Packit |
7d6a7d |
|
|
Packit |
7d6a7d |
return 42;
|
|
Packit |
7d6a7d |
}
|
|
Packit |
7d6a7d |
|
|
Packit |
7d6a7d |
void call_newCONSTSUB_3(void)
|
|
Packit |
7d6a7d |
{
|
|
Packit |
7d6a7d |
newCONSTSUB(gv_stashpv("Devel::PPPort", FALSE), "test_value_3", newSViv(3));
|
|
Packit |
7d6a7d |
}
|
|
Packit |
7d6a7d |
|
|
Packit |
7d6a7d |
U32 get_PL_signals_3(void)
|
|
Packit |
7d6a7d |
{
|
|
Packit |
7d6a7d |
return PL_signals;
|
|
Packit |
7d6a7d |
}
|
|
Packit |
7d6a7d |
|
|
Packit |
7d6a7d |
int dummy_parser_warning(void)
|
|
Packit |
7d6a7d |
{
|
|
Packit |
7d6a7d |
char * volatile my_bufptr;
|
|
Packit |
7d6a7d |
char * volatile *my_p_bufptr;
|
|
Packit |
7d6a7d |
my_bufptr = PL_bufptr;
|
|
Packit |
7d6a7d |
my_p_bufptr = &PL_bufptr;
|
|
Packit |
7d6a7d |
PL_bufptr = my_bufptr;
|
|
Packit |
7d6a7d |
PL_bufptr = *my_p_bufptr;
|
|
Packit |
7d6a7d |
return &PL_bufptr != NULL;
|
|
Packit |
7d6a7d |
}
|