diff options
| author | zv@archiware.com <vasiljevic> | 2008-04-27 08:18:12 (GMT) |
|---|---|---|
| committer | zv@archiware.com <vasiljevic> | 2008-04-27 08:18:12 (GMT) |
| commit | 02e9f1199c304fbd99cbbfbf80ae1b250aaa8729 (patch) | |
| tree | 8850af7a395c615ea7716e32a9979dcecdceea38 | |
| parent | 5e093f2cb568198142b0b63abdb604dc8ab420d5 (diff) | |
| download | tcl-02e9f1199c304fbd99cbbfbf80ae1b250aaa8729.zip tcl-02e9f1199c304fbd99cbbfbf80ae1b250aaa8729.tar.gz tcl-02e9f1199c304fbd99cbbfbf80ae1b250aaa8729.tar.bz2 | |
Also, panic early if we find out the wrong thread attempting
to delete the async handler (common trap). As, only the one
that created the handler is allowed to delete it.
| -rw-r--r-- | ChangeLog | 4 | ||||
| -rw-r--r-- | generic/tclAsync.c | 10 |
2 files changed, 13 insertions, 1 deletions
@@ -4,6 +4,10 @@ to locate handler token fails. Happens when some other thread attempts to delete somebody else's token. + Also, panic early if we find out the wrong thread attempting + to delete the async handler (common trap). As, only the one + that created the handler is allowed to delete it. + 2008-04-17 Andreas Kupries <andreask@activestate.com> *** 8.4.19 TAGGED FOR RELEASE *** diff --git a/generic/tclAsync.c b/generic/tclAsync.c index f036b47..9a78c8f 100644 --- a/generic/tclAsync.c +++ b/generic/tclAsync.c @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclAsync.c,v 1.6.12.2 2008/04/26 11:37:47 vasiljevic Exp $ + * RCS: @(#) $Id: tclAsync.c,v 1.6.12.3 2008/04/27 08:18:13 vasiljevic Exp $ */ #include "tclInt.h" @@ -294,6 +294,14 @@ Tcl_AsyncDelete(async) AsyncHandler *prevPtr, *thisPtr; /* + * Assure early handling of the constraint + */ + + if (asyncPtr->originThrdId != Tcl_GetCurrentThread()) { + panic("Tcl_AsyncDelete: async handler deleted by the wrong thread"); + } + + /* * If we come to this point when TSD's for the current * thread have already been garbage-collected, we are * in the _serious_ trouble. OTOH, we tolerate calling |
