… | |
… | |
31 | PUSHSTACKi (PERLSI_DESTROY); |
31 | PUSHSTACKi (PERLSI_DESTROY); |
32 | |
32 | |
33 | PUSHMARK (SP); |
33 | PUSHMARK (SP); |
34 | PUTBACK; |
34 | PUTBACK; |
35 | call_sv (cb, G_VOID | G_DISCARD | G_EVAL); |
35 | call_sv (cb, G_VOID | G_DISCARD | G_EVAL); |
36 | SPAGAIN; |
|
|
37 | |
36 | |
38 | if (SvTRUE (ERRSV)) |
37 | if (SvTRUE (ERRSV)) |
39 | { |
38 | { |
|
|
39 | SPAGAIN; |
|
|
40 | |
40 | PUSHMARK (SP); |
41 | PUSHMARK (SP); |
41 | PUTBACK; |
42 | PUTBACK; |
42 | call_sv (get_sv ("Guard::DIED", 1), G_VOID | G_DISCARD | G_EVAL | G_KEEPERR); |
43 | call_sv (get_sv ("Guard::DIED", 1), G_VOID | G_DISCARD | G_EVAL | G_KEEPERR); |
43 | SPAGAIN; |
|
|
44 | |
44 | |
45 | sv_setpvn (ERRSV, "", 0); |
45 | sv_setpvn (ERRSV, "", 0); |
46 | } |
46 | } |
47 | |
47 | |
48 | if (saveerr) |
48 | if (saveerr) |
… | |
… | |
75 | }; |
75 | }; |
76 | |
76 | |
77 | MODULE = Guard PACKAGE = Guard |
77 | MODULE = Guard PACKAGE = Guard |
78 | |
78 | |
79 | BOOT: |
79 | BOOT: |
80 | guard_stash = gv_stashpv ("Guard", 1); |
|
|
81 | |
|
|
82 | void |
|
|
83 | CLONE (...) |
|
|
84 | PROTOTYPE: @ |
|
|
85 | CODE: |
|
|
86 | guard_stash = gv_stashpv ("Guard", 1); |
80 | guard_stash = gv_stashpv ("Guard", 1); |
87 | |
81 | |
88 | void |
82 | void |
89 | scope_guard (SV *block) |
83 | scope_guard (SV *block) |
90 | PROTOTYPE: & |
84 | PROTOTYPE: & |