summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog4
-rw-r--r--generic/tclIORChan.c7
2 files changed, 7 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index 36cf7f1..bc323fa 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2011-08-23 Don Porter <dgp@users.sourceforge.net>
+
+ * generic/tclIORChan.c: [Bug 3396948] Leak of ReflectedChannelMap.
+
2011-08-23 Jan Nijtmans <nijtmans@users.sf.net>
* generic/tclStringObj.c: [FRQ 3396731] inline string reverse
diff --git a/generic/tclIORChan.c b/generic/tclIORChan.c
index 9ba42ef..846618c 100644
--- a/generic/tclIORChan.c
+++ b/generic/tclIORChan.c
@@ -2516,6 +2516,7 @@ DeleteReflectedChannelMap(
Tcl_ConditionNotify(&resultPtr->done);
}
+ Tcl_MutexUnlock(&rcForwardMutex);
/*
* Get the map of all channels handled by the current thread. This is a
@@ -2541,8 +2542,6 @@ DeleteReflectedChannelMap(
Tcl_DeleteHashEntry(hPtr);
}
-
- Tcl_MutexUnlock(&rcForwardMutex);
#endif
}
@@ -2650,6 +2649,7 @@ DeleteThreadReflectedChannelMap(
Tcl_ConditionNotify(&resultPtr->done);
}
+ Tcl_MutexUnlock(&rcForwardMutex);
/*
* Get the map of all channels handled by the current thread. This is a
@@ -2667,8 +2667,7 @@ DeleteThreadReflectedChannelMap(
rcPtr->interp = NULL;
Tcl_DeleteHashEntry(hPtr);
}
-
- Tcl_MutexUnlock(&rcForwardMutex);
+ ckfree(rcmPtr);
}
static void