diff options
| author | jan.nijtmans <nijtmans@users.sourceforge.net> | 2019-05-10 07:46:32 (GMT) |
|---|---|---|
| committer | jan.nijtmans <nijtmans@users.sourceforge.net> | 2019-05-10 07:46:32 (GMT) |
| commit | 7b90ffbb489e5b0b09f23a6296f69f070127fd57 (patch) | |
| tree | b4b8b874d4101f811de99438daa6d037daa506f1 /generic/tclVar.c | |
| parent | f9eb1833d2785265d8dc52992750ef10d9cc1c19 (diff) | |
| parent | b1139d3d2099aad8ad1981deaa0f689e1b4c322a (diff) | |
| download | tcl-7b90ffbb489e5b0b09f23a6296f69f070127fd57.zip tcl-7b90ffbb489e5b0b09f23a6296f69f070127fd57.tar.gz tcl-7b90ffbb489e5b0b09f23a6296f69f070127fd57.tar.bz2 | |
merge 8.7
Diffstat (limited to 'generic/tclVar.c')
| -rw-r--r-- | generic/tclVar.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/generic/tclVar.c b/generic/tclVar.c index 3271935..e400369 100644 --- a/generic/tclVar.c +++ b/generic/tclVar.c @@ -722,7 +722,7 @@ TclObjLookupVarEx( Tcl_Obj *cachedNamePtr = localName(varFramePtr, index); if (part1Ptr == cachedNamePtr) { - cachedNamePtr = NULL; + LocalSetIntRep(part1Ptr, index, NULL); } else { /* * [80304238ac] Trickiness here. We will store and incr the @@ -735,6 +735,14 @@ TclObjLookupVarEx( * cachedNamePtr and leave it as string only. This is * radical and destructive, so a better idea would be welcome. */ + + /* + * Firstly set cached local var reference (avoid free before set, + * see [45b9faf103f2]) + */ + LocalSetIntRep(part1Ptr, index, cachedNamePtr); + + /* Then wipe it */ TclFreeIntRep(cachedNamePtr); /* @@ -744,7 +752,6 @@ TclObjLookupVarEx( */ LocalSetIntRep(cachedNamePtr, index, NULL); } - LocalSetIntRep(part1Ptr, index, cachedNamePtr); } else { /* * At least mark part1Ptr as already parsed. |
