1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
-
+
|
/*
* tclLoad.c --
*
* This file provides the generic portion (those that are the same on all
* platforms) of Tcl's dynamic loading facilities.
*
* Copyright (c) 1995-1997 Sun Microsystems, Inc.
*
* 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"
/*
* The following structure describes a package that has been loaded either
* dynamically (with the "load" command) or statically (as indicated by a call
|
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
|
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
|
+
-
+
+
|
*/
if (pkgPtr->fileName[0] != '\0') {
Tcl_FSUnloadFileProc *unLoadProcPtr = pkgPtr->unLoadProcPtr;
if (unLoadProcPtr != NULL) {
Tcl_MutexLock(&packageMutex);
if (pkgPtr->unloadProc != NULL) {
(*unLoadProcPtr)(pkgPtr->loadHandle);
(*unLoadProcPtr)(pkgPtr->loadHandle);
}
/*
* Remove this library from the loaded library cache.
*/
defaultPtr = pkgPtr;
if (defaultPtr == firstPackagePtr) {
|
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
|
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
|
-
+
|
* calls that can't be unregistered. If you unload such dlls, you get
* a core on exit because it wants to call a function in the dll after
* it has been unloaded.
*/
if (pkgPtr->fileName[0] != '\0') {
Tcl_FSUnloadFileProc *unLoadProcPtr = pkgPtr->unLoadProcPtr;
if (unLoadProcPtr != NULL) {
if ((unLoadProcPtr != NULL) && (pkgPtr->unloadProc != NULL)) {
(*unLoadProcPtr)(pkgPtr->loadHandle);
}
}
#endif
ckfree(pkgPtr->fileName);
ckfree(pkgPtr->packageName);
|