X-Git-Url: http://git.vpit.fr/?p=perl%2Fmodules%2FLexical-Types.git;a=blobdiff_plain;f=Types.xs;h=a8fb284c35a89b6f8379f04553f51f7f676a54fa;hp=0a13cdb88caf7c94517d61d6188349c1e15a604c;hb=420f91f3c4f8aa318ede84928eb7c671921500ea;hpb=34f54f87c254e212ef4db5d29937471be325d2b8 diff --git a/Types.xs b/Types.xs index 0a13cdb..a8fb284 100644 --- a/Types.xs +++ b/Types.xs @@ -216,21 +216,12 @@ STATIC void lt_ptable_hints_clone(pTHX_ ptable_ent *ent, void *ud_) { ptable_hints_store(ud->tbl, ent->key, h2); } -STATIC void lt_thread_cleanup(pTHX_ void *); +#include "reap.h" STATIC void lt_thread_cleanup(pTHX_ void *ud) { - int *level = ud; + dMY_CXT; - if (*level) { - *level = 0; - LEAVE; - SAVEDESTRUCTOR_X(lt_thread_cleanup, level); - ENTER; - } else { - dMY_CXT; - PerlMemShared_free(level); - ptable_hints_free(MY_CXT.tbl); - } + ptable_hints_free(MY_CXT.tbl); } #endif /* LT_THREADSAFE */ @@ -739,7 +730,6 @@ CLONE(...) PROTOTYPE: DISABLE PREINIT: ptable *t; - int *level; SV *cloned_default_meth; PPCODE: { @@ -757,13 +747,7 @@ PPCODE: MY_CXT.pp_padsv_saved = 0; MY_CXT.default_meth = cloned_default_meth; } - { - level = PerlMemShared_malloc(sizeof *level); - *level = 1; - LEAVEn("sub"); - SAVEDESTRUCTOR_X(lt_thread_cleanup, level); - ENTERn("sub"); - } + reap(3, lt_thread_cleanup, NULL); XSRETURN(0); #endif