summaryrefslogtreecommitdiffstats
path: root/generic/tclLoad.c
diff options
context:
space:
mode:
authorjan.nijtmans <nijtmans@users.sourceforge.net>2017-01-05 15:13:58 (GMT)
committerjan.nijtmans <nijtmans@users.sourceforge.net>2017-01-05 15:13:58 (GMT)
commit1952bac5479aeb7c7493591cd707ed9ed8ba6b54 (patch)
treeaa10f9e6271aeb153b633370e5366a230ac2b58a /generic/tclLoad.c
parent2ba138980311e60d5317ba5ed8814e11d9c4a997 (diff)
downloadtcl-1952bac5479aeb7c7493591cd707ed9ed8ba6b54.zip
tcl-1952bac5479aeb7c7493591cd707ed9ed8ba6b54.tar.gz
tcl-1952bac5479aeb7c7493591cd707ed9ed8ba6b54.tar.bz2
Make TclGetLoadedPackagesEx() work with other than the only current interpreter (didn't really think about that earlier ... ). Actually slightly more correct.
Diffstat (limited to 'generic/tclLoad.c')
-rw-r--r--generic/tclLoad.c20
1 files changed, 11 insertions, 9 deletions
diff --git a/generic/tclLoad.c b/generic/tclLoad.c
index 44085d6..bcda420 100644
--- a/generic/tclLoad.c
+++ b/generic/tclLoad.c
@@ -1074,20 +1074,27 @@ TclGetLoadedPackagesEx(
return TCL_OK;
}
+ target = Tcl_GetSlave(interp, targetName);
+ if (target == NULL) {
+ return TCL_ERROR;
+ }
+ ipPtr = Tcl_GetAssocData(target, "tclLoad", NULL);
+
/*
* Return information about all of the available packages.
*/
if (packageName) {
resultObj = NULL;
- Tcl_MutexLock(&packageMutex);
- for (pkgPtr = firstPackagePtr; pkgPtr != NULL;
- pkgPtr = pkgPtr->nextPtr) {
+
+ for (; ipPtr != NULL; ipPtr = ipPtr->nextPtr) {
+ pkgPtr = ipPtr->pkgPtr;
+
if (!strcmp(packageName, pkgPtr->packageName)) {
resultObj = Tcl_NewStringObj(pkgPtr->fileName, -1);
break;
}
}
- Tcl_MutexUnlock(&packageMutex);
+
if (resultObj) {
Tcl_SetObjResult(interp, resultObj);
}
@@ -1099,11 +1106,6 @@ TclGetLoadedPackagesEx(
* interpreter.
*/
- target = Tcl_GetSlave(interp, targetName);
- if (target == NULL) {
- return TCL_ERROR;
- }
- ipPtr = Tcl_GetAssocData(target, "tclLoad", NULL);
resultObj = Tcl_NewObj();
for (; ipPtr != NULL; ipPtr = ipPtr->nextPtr) {
pkgPtr = ipPtr->pkgPtr;