summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog7
-rw-r--r--macosx/tclMacOSXNotify.c4
2 files changed, 9 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index a2545c4..d048e29 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2005-05-19 Daniel Steffen <das@users.sourceforge.net>
+
+ * macosx/tclMacOSXNotify.c (Tcl_InitNotifier): fixed crashing
+ CFRelease of runLoopSource in Tcl_InitNotifier (reported by Zoran):
+ CFRunLoopAddSource doesn't CFRetain, so can only CFRelease the
+ runLoopSource in Tcl_FinalizeNotifier.
+
2005-05-14 Daniel Steffen <das@users.sourceforge.net>
* macosx/tclMacOSXBundle.c:
diff --git a/macosx/tclMacOSXNotify.c b/macosx/tclMacOSXNotify.c
index bf3b9bc..8cc5af2 100644
--- a/macosx/tclMacOSXNotify.c
+++ b/macosx/tclMacOSXNotify.c
@@ -13,7 +13,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tclMacOSXNotify.c,v 1.1.2.2 2005/05/14 20:52:31 das Exp $
+ * RCS: @(#) $Id: tclMacOSXNotify.c,v 1.1.2.3 2005/05/19 13:28:34 das Exp $
*/
#ifdef HAVE_COREFOUNDATION /* Traditional unix select-based notifier
@@ -249,7 +249,6 @@ Tcl_InitNotifier()
Tcl_Panic("Tcl_InitNotifier: could not create CFRunLoopSource.");
}
CFRunLoopAddSource(runLoop, runLoopSource, kCFRunLoopCommonModes);
- CFRelease(runLoopSource);
tsdPtr->runLoopSource = runLoopSource;
tsdPtr->runLoop = runLoop;
}
@@ -364,6 +363,7 @@ Tcl_FinalizeNotifier(clientData)
tsdPtr->runLoop = NULL;
/* Remove runLoopSource from all CFRunLoops and release it */
CFRunLoopSourceInvalidate(tsdPtr->runLoopSource);
+ CFRelease(runLoopSource);
tsdPtr->runLoopSource = NULL;
}
UNLOCK_NOTIFIER;