From 306b3f648c7949e5a1d7dc6519eb7df37d25891c Mon Sep 17 00:00:00 2001 From: dgp Date: Tue, 30 Aug 2011 15:44:28 +0000 Subject: Prevent segfaults attempting to use thread maps after they've been deleted. --- generic/tclIORChan.c | 3 +++ generic/tclIORTrans.c | 3 +++ 2 files changed, 6 insertions(+) diff --git a/generic/tclIORChan.c b/generic/tclIORChan.c index 846618c..8ab36d0 100644 --- a/generic/tclIORChan.c +++ b/generic/tclIORChan.c @@ -2525,6 +2525,9 @@ DeleteReflectedChannelMap( * interpreter. They have already been marked as dead. */ + if (TclInThreadExit()) { + return; + } rcmPtr = GetThreadReflectedChannelMap(); for (hPtr = Tcl_FirstHashEntry(&rcmPtr->map, &hSearch); hPtr != NULL; diff --git a/generic/tclIORTrans.c b/generic/tclIORTrans.c index fa973c7..949d42d 100644 --- a/generic/tclIORTrans.c +++ b/generic/tclIORTrans.c @@ -2200,6 +2200,9 @@ DeleteReflectedTransformMap( * interpreter. They have already been marked as dead. */ + if (TclInThreadExit()) { + return; + } rtmPtr = GetThreadReflectedTransformMap(); for (hPtr = Tcl_FirstHashEntry(&rtmPtr->map, &hSearch); hPtr != NULL; -- cgit v0.12