summaryrefslogtreecommitdiffstats
path: root/generic/tclPkg.c
diff options
context:
space:
mode:
authordgp <dgp@users.sourceforge.net>2018-01-04 02:32:46 (GMT)
committerdgp <dgp@users.sourceforge.net>2018-01-04 02:32:46 (GMT)
commit6c799d891d69e04b9e0f32ca59719b4b23dc311a (patch)
tree5936604aa53ceb6b5b41aa6fed1d8403f4735009 /generic/tclPkg.c
parent4a038240c4966cfaa72e90901a3a9951f6f3d020 (diff)
downloadtcl-6c799d891d69e04b9e0f32ca59719b4b23dc311a.zip
tcl-6c799d891d69e04b9e0f32ca59719b4b23dc311a.tar.gz
tcl-6c799d891d69e04b9e0f32ca59719b4b23dc311a.tar.bz2
Minimal fixes to stop the [package files] machinery writing to freed mem.
This contribution needs a careful review from someone who actually knows how Tcl_Preserve, etc. work.
Diffstat (limited to 'generic/tclPkg.c')
-rw-r--r--generic/tclPkg.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/generic/tclPkg.c b/generic/tclPkg.c
index cdf9a8b..288d5dc 100644
--- a/generic/tclPkg.c
+++ b/generic/tclPkg.c
@@ -948,6 +948,7 @@ Tcl_PackageObjCmd(
Tcl_EventuallyFree(availPtr->script, TCL_DYNAMIC);
if (availPtr->pkgIndex) {
Tcl_EventuallyFree(availPtr->pkgIndex, TCL_DYNAMIC);
+ availPtr->pkgIndex = NULL;
}
ckfree(availPtr);
}
@@ -1001,6 +1002,7 @@ Tcl_PackageObjCmd(
Tcl_EventuallyFree(availPtr->script, TCL_DYNAMIC);
if (availPtr->pkgIndex) {
Tcl_EventuallyFree(availPtr->pkgIndex, TCL_DYNAMIC);
+ availPtr->pkgIndex = NULL;
}
break;
}
@@ -1012,7 +1014,7 @@ Tcl_PackageObjCmd(
}
if (availPtr == NULL) {
availPtr = ckalloc(sizeof(PkgAvail));
- availPtr->pkgIndex = 0;
+ availPtr->pkgIndex = NULL;
DupBlock(availPtr->version, argv3, (unsigned) length + 1);
if (prevPtr == NULL) {
@@ -1384,6 +1386,7 @@ TclFreePackageInfo(
Tcl_EventuallyFree(availPtr->script, TCL_DYNAMIC);
if (availPtr->pkgIndex) {
Tcl_EventuallyFree(availPtr->pkgIndex, TCL_DYNAMIC);
+ availPtr->pkgIndex = NULL;
}
ckfree(availPtr);
}