X-Git-Url: http://git.vpit.fr/?a=blobdiff_plain;f=Upper.xs;h=7cbbaa2da3fe315efbbdf62c4cbd1e30265272b2;hb=9aba07492fcdd1ac92533eddc90efb524d3777df;hp=bb4300de7e24ce302efce94a317d291d7c5d05d6;hpb=219fcff6c09b18b379da5f2d173b0a7755f83d9a;p=perl%2Fmodules%2FScope-Upper.git diff --git a/Upper.xs b/Upper.xs index bb4300d..7cbbaa2 100644 --- a/Upper.xs +++ b/Upper.xs @@ -1381,6 +1381,8 @@ static su_uplevel_ud *su_uplevel_storage_new(pTHX_ I32 cxix) { return sud; } +#if SU_HAS_PERL(5, 13, 7) + static void su_uplevel_storage_delete(pTHX_ su_uplevel_ud *sud) { #define su_uplevel_storage_delete(S) su_uplevel_storage_delete(aTHX_ (S)) dMY_CXT; @@ -1408,6 +1410,8 @@ static void su_uplevel_storage_delete(pTHX_ su_uplevel_ud *sud) { } } +#endif + static int su_uplevel_goto_static(const OP *o) { for (; o; o = OpSIBLING(o)) { /* goto ops are unops with kids. */ @@ -2211,6 +2215,13 @@ static void su_global_teardown(pTHX_ void *root) { return; #endif + SU_LOCK(&su_uid_seq_counter_mutex); + PerlMemShared_free(su_uid_seq_counter.seqs); + su_uid_seq_counter.size = 0; + SU_UNLOCK(&su_uid_seq_counter_mutex); + + MUTEX_DESTROY(&su_uid_seq_counter_mutex); + su_initialized = 0; return; @@ -2235,8 +2246,10 @@ static void su_global_setup(pTHX_ SU_XS_FILE_TYPE *file) { MUTEX_INIT(&su_uid_seq_counter_mutex); + SU_LOCK(&su_uid_seq_counter_mutex); su_uid_seq_counter.seqs = NULL; su_uid_seq_counter.size = 0; + SU_UNLOCK(&su_uid_seq_counter_mutex); stash = gv_stashpv(__PACKAGE__, 1); newCONSTSUB(stash, "TOP", newSViv(0));