1 ################################################################################
3 ## Version 3.x, Copyright (C) 2004-2013, Marcus Holland-Moritz.
4 ## Version 2.x, Copyright (C) 2001, Paul Marquess.
5 ## Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
7 ## This program is free software; you can redistribute it and/or
8 ## modify it under the same terms as Perl itself.
10 ################################################################################
24 # define dXCPT dJMPENV; int rEtV = 0
25 # define XCPT_TRY_START JMPENV_PUSH(rEtV); if (rEtV == 0)
26 # define XCPT_TRY_END JMPENV_POP;
27 # define XCPT_CATCH if (rEtV != 0)
28 # define XCPT_RETHROW JMPENV_JUMP(rEtV)
30 # define dXCPT Sigjmp_buf oldTOP; int rEtV = 0
31 # define XCPT_TRY_START Copy(top_env, oldTOP, 1, Sigjmp_buf); rEtV = Sigsetjmp(top_env, 1); if (rEtV == 0)
32 # define XCPT_TRY_END Copy(oldTOP, top_env, 1, Sigjmp_buf);
33 # define XCPT_CATCH if (rEtV != 0)
34 # define XCPT_RETHROW Siglongjmp(top_env, rEtV)
40 /* defined in module3.c */
41 int exception(int throw_e);
55 $Devel::PPPort::exception_caught = undef;
57 $rv = eval { &Devel::PPPort::exception(0) };
61 ok($Devel::PPPort::exception_caught, 0);
63 $Devel::PPPort::exception_caught = undef;
65 $rv = eval { &Devel::PPPort::exception(1) };
68 ok($Devel::PPPort::exception_caught, 1);