15759b3d2Safresh1 /*******************************************************************************
25759b3d2Safresh1 *
35759b3d2Safresh1 * Perl/Pollution/Portability
45759b3d2Safresh1 *
55759b3d2Safresh1 ********************************************************************************
65759b3d2Safresh1 *
75759b3d2Safresh1 * Version 3.x, Copyright (C) 2004-2013, Marcus Holland-Moritz.
85759b3d2Safresh1 * Version 2.x, Copyright (C) 2001, Paul Marquess.
95759b3d2Safresh1 * Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
105759b3d2Safresh1 *
115759b3d2Safresh1 * This program is free software; you can redistribute it and/or
125759b3d2Safresh1 * modify it under the same terms as Perl itself.
135759b3d2Safresh1 *
145759b3d2Safresh1 *******************************************************************************/
155759b3d2Safresh1
165759b3d2Safresh1 #include "EXTERN.h"
175759b3d2Safresh1 #include "perl.h"
185759b3d2Safresh1
195759b3d2Safresh1 #define NEED_PL_parser
205759b3d2Safresh1 #define NO_XSLOCKS
215759b3d2Safresh1 #include "XSUB.h"
225759b3d2Safresh1
235759b3d2Safresh1 #include "ppport.h"
245759b3d2Safresh1
throws_exception(int throw_e)255759b3d2Safresh1 static void throws_exception(int throw_e)
265759b3d2Safresh1 {
275759b3d2Safresh1 if (throw_e)
285759b3d2Safresh1 croak("boo\n");
295759b3d2Safresh1 }
305759b3d2Safresh1
exception(int throw_e)315759b3d2Safresh1 int exception(int throw_e)
325759b3d2Safresh1 {
335759b3d2Safresh1 dTHR;
345759b3d2Safresh1 dXCPT;
355759b3d2Safresh1 SV *caught = get_sv("Devel::PPPort::exception_caught", 0);
365759b3d2Safresh1
375759b3d2Safresh1 XCPT_TRY_START {
385759b3d2Safresh1 throws_exception(throw_e);
395759b3d2Safresh1 } XCPT_TRY_END
405759b3d2Safresh1
415759b3d2Safresh1 XCPT_CATCH
425759b3d2Safresh1 {
435759b3d2Safresh1 sv_setiv(caught, 1);
445759b3d2Safresh1 XCPT_RETHROW;
455759b3d2Safresh1 }
465759b3d2Safresh1
475759b3d2Safresh1 sv_setiv(caught, 0);
485759b3d2Safresh1
495759b3d2Safresh1 return 42;
505759b3d2Safresh1 }
515759b3d2Safresh1
call_newCONSTSUB_3(void)525759b3d2Safresh1 void call_newCONSTSUB_3(void)
535759b3d2Safresh1 {
545759b3d2Safresh1 newCONSTSUB(gv_stashpv("Devel::PPPort", FALSE), "test_value_3", newSViv(3));
555759b3d2Safresh1 }
565759b3d2Safresh1
get_PL_signals_3(void)575759b3d2Safresh1 U32 get_PL_signals_3(void)
585759b3d2Safresh1 {
595759b3d2Safresh1 return PL_signals;
605759b3d2Safresh1 }
615759b3d2Safresh1
dummy_parser_warning(void)625759b3d2Safresh1 int dummy_parser_warning(void)
635759b3d2Safresh1 {
645759b3d2Safresh1 char * volatile my_bufptr;
655759b3d2Safresh1 char * volatile *my_p_bufptr;
665759b3d2Safresh1 my_bufptr = PL_bufptr;
675759b3d2Safresh1 my_p_bufptr = &PL_bufptr;
685759b3d2Safresh1 PL_bufptr = my_bufptr;
695759b3d2Safresh1 PL_bufptr = *my_p_bufptr;
70*f2a19305Safresh1 return my_p_bufptr != NULL;
715759b3d2Safresh1 }
72