diff options
author | nijtmans <nijtmans> | 2008-10-07 20:51:46 (GMT) |
---|---|---|
committer | nijtmans <nijtmans> | 2008-10-07 20:51:46 (GMT) |
commit | dc5c90f4a6e01534ffc03e64ca44c034c87a68df (patch) | |
tree | d84545033e20f70a541fc73d622ffe6b8526b48c /generic/tclLoad.c | |
parent | cdb3076a4c8510e94caadbdf9440a95fe580421b (diff) | |
download | tcl-dc5c90f4a6e01534ffc03e64ca44c034c87a68df.zip tcl-dc5c90f4a6e01534ffc03e64ca44c034c87a68df.tar.gz tcl-dc5c90f4a6e01534ffc03e64ca44c034c87a68df.tar.bz2 |
* tclWinTest.c: Fix compiler warning when compiling this file with mingw gcc:
tclWinTest.c:706: warning: dereferencing type-punned pointer will break
strict-aliasing rules
* generic/tclLoad.c: Make sure that any library which doesn't have an
unloadproc is only really unloaded when no library code is executed
yet. [Bug 2059262]
Diffstat (limited to 'generic/tclLoad.c')
-rw-r--r-- | generic/tclLoad.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/generic/tclLoad.c b/generic/tclLoad.c index 29e2d01..89e003c 100644 --- a/generic/tclLoad.c +++ b/generic/tclLoad.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclLoad.c,v 1.16 2007/02/20 23:24:03 nijtmans Exp $ + * RCS: @(#) $Id: tclLoad.c,v 1.16.4.1 2008/10/07 20:51:46 nijtmans Exp $ */ #include "tclInt.h" @@ -795,7 +795,9 @@ Tcl_UnloadObjCmd( if (unLoadProcPtr != NULL) { Tcl_MutexLock(&packageMutex); - (*unLoadProcPtr)(pkgPtr->loadHandle); + if (pkgPtr->unloadProc != NULL) { + (*unLoadProcPtr)(pkgPtr->loadHandle); + } /* * Remove this library from the loaded library cache. @@ -1152,7 +1154,7 @@ TclFinalizeLoad(void) if (pkgPtr->fileName[0] != '\0') { Tcl_FSUnloadFileProc *unLoadProcPtr = pkgPtr->unLoadProcPtr; - if (unLoadProcPtr != NULL) { + if ((unLoadProcPtr != NULL) && (pkgPtr->unloadProc != NULL)) { (*unLoadProcPtr)(pkgPtr->loadHandle); } } |