diff options
author | dkf <dkf@noemail.net> | 2009-03-24 09:30:05 (GMT) |
---|---|---|
committer | dkf <dkf@noemail.net> | 2009-03-24 09:30:05 (GMT) |
commit | 779ed53b486bf8e58499046b9f0ab2bffc6024e6 (patch) | |
tree | b0a931039f6aab48be0e24f11010a7c0420e3db7 /generic/tclProc.c | |
parent | bcbb9073f3facd3cf5eae11bf5bc1ab34946bba1 (diff) | |
download | tcl-779ed53b486bf8e58499046b9f0ab2bffc6024e6.zip tcl-779ed53b486bf8e58499046b9f0ab2bffc6024e6.tar.gz tcl-779ed53b486bf8e58499046b9f0ab2bffc6024e6.tar.bz2 |
Fix [Bug 2673163]
FossilOrigin-Name: 1c6d19544d18c36a2f8538b232ac824cef7e3c84
Diffstat (limited to 'generic/tclProc.c')
-rw-r--r-- | generic/tclProc.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/generic/tclProc.c b/generic/tclProc.c index 611ae45..2062672 100644 --- a/generic/tclProc.c +++ b/generic/tclProc.c @@ -12,7 +12,7 @@ * See the file "license.terms" for information on usage and redistribution of * this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclProc.c,v 1.170 2009/02/10 22:50:07 nijtmans Exp $ + * RCS: @(#) $Id: tclProc.c,v 1.171 2009/03/24 09:30:07 dkf Exp $ */ #include "tclInt.h" @@ -787,7 +787,7 @@ TclObjGetFrame( register Interp *iPtr = (Interp *) interp; int curLevel, level, result; CallFrame *framePtr; - const char *name = TclGetString(objPtr); + const char *name; /* * Parse object to figure out which level number to go to. @@ -795,6 +795,12 @@ TclObjGetFrame( result = 1; curLevel = iPtr->varFramePtr->level; + if (objPtr == NULL) { + name = "1"; + goto haveLevel1; + } + + name = TclGetString(objPtr); if (objPtr->typePtr == &levelReferenceType) { if (objPtr->internalRep.ptrAndLongRep.ptr != NULL) { level = curLevel - objPtr->internalRep.ptrAndLongRep.value; @@ -847,9 +853,11 @@ TclObjGetFrame( level = curLevel - level; } else { /* - * Don't cache as the object *isn't* a level reference. + * Don't cache as the object *isn't* a level reference (might even be + * NULL...) */ + haveLevel1: level = curLevel - 1; result = 0; } |