From: Vincent Pit Date: Sat, 4 Oct 2014 22:39:58 +0000 (+0200) Subject: Nullify thread local storage entries when they are freed X-Git-Tag: v0.13~6 X-Git-Url: http://git.vpit.fr/?p=perl%2Fmodules%2FLexical-Types.git;a=commitdiff_plain;h=b99a3bce46a7a325bfe18ce349df5cd80bdbc78f Nullify thread local storage entries when they are freed This makes possible problems easier to reproduce. --- diff --git a/Types.xs b/Types.xs index a88ced7..752e3f4 100644 --- a/Types.xs +++ b/Types.xs @@ -263,8 +263,11 @@ STATIC void lt_thread_cleanup(pTHX_ void *ud) { dMY_CXT; ptable_hints_free(MY_CXT.tbl); + MY_CXT.tbl = NULL; ptable_seen_free(MY_CXT.seen); + MY_CXT.seen = NULL; SvREFCNT_dec(MY_CXT.default_meth); + MY_CXT.default_meth = NULL; } STATIC int lt_endav_free(pTHX_ SV *sv, MAGIC *mg) { @@ -934,9 +937,12 @@ STATIC void lt_teardown(pTHX_ void *root) { dMY_CXT; #if LT_THREADSAFE ptable_hints_free(MY_CXT.tbl); + MY_CXT.tbl = NULL; #endif ptable_seen_free(MY_CXT.seen); + MY_CXT.seen = NULL; SvREFCNT_dec(MY_CXT.default_meth); + MY_CXT.default_meth = NULL; } lt_ck_restore(OP_PADANY, <_old_ck_padany);