… | |
… | |
35 | |
35 | |
36 | #ifndef SvREFCNT_inc_NN |
36 | #ifndef SvREFCNT_inc_NN |
37 | #define SvREFCNT_inc_NN(sv) SvREFCNT_inc (sv) |
37 | #define SvREFCNT_inc_NN(sv) SvREFCNT_inc (sv) |
38 | #endif |
38 | #endif |
39 | |
39 | |
|
|
40 | #ifndef RECURSION_CHECK |
40 | #define RECURSION_CHECK 0 |
41 | #define RECURSION_CHECK 0 |
|
|
42 | #endif |
41 | |
43 | |
42 | static X_TLS_DECLARE(current_key); |
44 | static X_TLS_DECLARE(current_key); |
43 | #if RECURSION_CHECK |
45 | #if RECURSION_CHECK |
44 | static X_TLS_DECLARE(check_key); |
46 | static X_TLS_DECLARE(check_key); |
45 | #endif |
47 | #endif |
46 | |
48 | |
|
|
49 | static void |
|
|
50 | fatal (const char *msg) |
|
|
51 | { |
|
|
52 | write (2, msg, strlen (msg)); |
|
|
53 | abort (); |
|
|
54 | } |
47 | |
55 | |
48 | static s_epipe ep; |
56 | static s_epipe ep; |
49 | static void *perl_thx; |
57 | static void *perl_thx; |
50 | static sigset_t cursigset, fullsigset; |
58 | static sigset_t cursigset, fullsigset; |
51 | |
59 | |
… | |
… | |
194 | static void |
202 | static void |
195 | pmapi_release (void) |
203 | pmapi_release (void) |
196 | { |
204 | { |
197 | #if RECURSION_CHECK |
205 | #if RECURSION_CHECK |
198 | if (X_TLS_GET (check_key)) |
206 | if (X_TLS_GET (check_key)) |
199 | croak ("perlinterp_release () called without valid perl context"); |
207 | fatal ("perlinterp_release () called without valid perl context"); |
200 | |
208 | |
201 | X_TLS_SET (check_key, &check_key); |
209 | X_TLS_SET (check_key, &check_key); |
202 | #endif |
210 | #endif |
203 | |
211 | |
204 | if (! ((thread_enable ? thread_enable : global_enable) & 1)) |
212 | if (! ((thread_enable ? thread_enable : global_enable) & 1)) |
… | |
… | |
237 | int jeret; |
245 | int jeret; |
238 | struct tctx *ctx = X_TLS_GET (current_key); |
246 | struct tctx *ctx = X_TLS_GET (current_key); |
239 | |
247 | |
240 | #if RECURSION_CHECK |
248 | #if RECURSION_CHECK |
241 | if (X_TLS_GET (check_key) != &check_key) |
249 | if (X_TLS_GET (check_key) != &check_key) |
242 | croak ("perlinterp_acquire () called with valid perl context"); |
250 | fatal ("perlinterp_acquire () called with valid perl context"); |
243 | |
251 | |
244 | X_TLS_SET (check_key, 0); |
252 | X_TLS_SET (check_key, 0); |
245 | #endif |
253 | #endif |
246 | |
254 | |
247 | if (!ctx) |
255 | if (!ctx) |