diff options
author | Miguel Sofer <miguel.sofer@gmail.com> | 2007-06-28 13:56:20 (GMT) |
---|---|---|
committer | Miguel Sofer <miguel.sofer@gmail.com> | 2007-06-28 13:56:20 (GMT) |
commit | e1bb8afe489c46336d1fbc4a223e26a9b3979121 (patch) | |
tree | 507edde926efb54c14512dc64d4c9c2c544250c6 | |
parent | f0da4e55104381d0a8bf98a2c3dfc4848efc1b3d (diff) | |
download | tcl-e1bb8afe489c46336d1fbc4a223e26a9b3979121.zip tcl-e1bb8afe489c46336d1fbc4a223e26a9b3979121.tar.gz tcl-e1bb8afe489c46336d1fbc4a223e26a9b3979121.tar.bz2 |
* generic/tclVar.c (UnsetVarStruct): fix possible segfault with
recent streamlining.
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | generic/tclVar.c | 11 |
2 files changed, 10 insertions, 5 deletions
@@ -1,3 +1,7 @@ +2007-06-28 Miguel Sofer <msofer@users.sf.net> + + * generic/tclVar.c (UnsetVarStruct): fix possible segfault. + 2007-06-27 Don Porter <dgp@users.sourceforge.net> * generic/tclTrace.c: Corrected broken trace reversal logic in diff --git a/generic/tclVar.c b/generic/tclVar.c index d6049e9..b0036d5 100644 --- a/generic/tclVar.c +++ b/generic/tclVar.c @@ -15,7 +15,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclVar.c,v 1.143 2007/06/26 13:34:36 msofer Exp $ + * RCS: @(#) $Id: tclVar.c,v 1.144 2007/06/28 13:56:21 msofer Exp $ */ #include "tclInt.h" @@ -2140,6 +2140,7 @@ UnsetVarStruct( } if (part1Ptr) { Tcl_DecrRefCount(part1Ptr); + part1 = NULL; } } @@ -2171,10 +2172,10 @@ UnsetVarStruct( } else if (TclIsVarArray(dummyVarPtr) && !TclIsVarUndefined(dummyVarPtr)) { /* * If the variable is an array, delete all of its elements. This must - * be done after calling the traces on the array, above (that's the - * way traces are defined). If the array is traced, its name is - * already in part1. If not, and the name is required for some - * element, it will be computed at DeleteArray. + * be done after calling and deleting the traces on the array, above + * (that's the way traces are defined). If the array name is not + * present and is required for a trace on some element, it will be + * computed at DeleteArray. */ DeleteArray(iPtr, part1, dummyVarPtr, (flags |