summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordgp <dgp@users.sourceforge.net>2023-11-13 19:24:20 (GMT)
committerdgp <dgp@users.sourceforge.net>2023-11-13 19:24:20 (GMT)
commit4c391a13ae96bbc5307b97af37bafa4e58ab5b86 (patch)
treec1a76d98c7cfb38ce3bb0b5143cffcb5daf3b811
parent7bb4d6043c9e6fe2c2d246a3cf47f7bfca7cd538 (diff)
downloadtcl-4c391a13ae96bbc5307b97af37bafa4e58ab5b86.zip
tcl-4c391a13ae96bbc5307b97af37bafa4e58ab5b86.tar.gz
tcl-4c391a13ae96bbc5307b97af37bafa4e58ab5b86.tar.bz2
Make calls early to find the script library in zipfs archive and alert
the Tcl library to its location so that all interps find it when created.
-rw-r--r--generic/tclZipfs.c22
1 files changed, 14 insertions, 8 deletions
diff --git a/generic/tclZipfs.c b/generic/tclZipfs.c
index adb7802..36fc82a 100644
--- a/generic/tclZipfs.c
+++ b/generic/tclZipfs.c
@@ -6453,6 +6453,7 @@ TclZipfs_AppHook(
Tcl_DecrRefCount(vfsInitScript);
if (found == TCL_OK) {
zipfs_literal_tcl_library = ZIPFS_TCL_LIBRARY_1;
+ Tcl_DecrRefCount(TclZipfs_TclLibrary());
return version;
}
}
@@ -6479,7 +6480,7 @@ TclZipfs_AppHook(
* wants it.
*/
- TclZipfs_TclLibrary();
+ Tcl_DecrRefCount(TclZipfs_TclLibrary());
TclNewLiteralStringObj(vfsInitScript,
ZIPFS_TCL_LIBRARY_3 "install.tcl");
Tcl_IncrRefCount(vfsInitScript);
@@ -6491,6 +6492,17 @@ TclZipfs_AppHook(
int found;
Tcl_Obj *vfsInitScript;
+ /* Set Tcl Encodings */
+ TclNewLiteralStringObj(vfsInitScript,
+ ZIPFS_TCL_LIBRARY_1 "/init.tcl");
+ Tcl_IncrRefCount(vfsInitScript);
+ found = Tcl_FSAccess(vfsInitScript, F_OK);
+ Tcl_DecrRefCount(vfsInitScript);
+ if (found == TCL_OK) {
+ zipfs_literal_tcl_library = ZIPFS_TCL_LIBRARY_1;
+ Tcl_DecrRefCount(TclZipfs_TclLibrary());
+ }
+
TclNewLiteralStringObj(vfsInitScript, ZIPFS_APP_MOUNT "/main.tcl");
Tcl_IncrRefCount(vfsInitScript);
if (Tcl_FSAccess(vfsInitScript, F_OK) == 0) {
@@ -6502,14 +6514,8 @@ TclZipfs_AppHook(
} else {
Tcl_DecrRefCount(vfsInitScript);
}
- /* Set Tcl Encodings */
- TclNewLiteralStringObj(vfsInitScript,
- ZIPFS_TCL_LIBRARY_1 "/init.tcl");
- Tcl_IncrRefCount(vfsInitScript);
- found = Tcl_FSAccess(vfsInitScript, F_OK);
- Tcl_DecrRefCount(vfsInitScript);
+
if (found == TCL_OK) {
- zipfs_literal_tcl_library = ZIPFS_TCL_LIBRARY_1;
return version;
}
}