diff options
author | dgp <dgp@users.sourceforge.net> | 2016-04-07 21:07:26 (GMT) |
---|---|---|
committer | dgp <dgp@users.sourceforge.net> | 2016-04-07 21:07:26 (GMT) |
commit | b42de3a4f38cb8f3837142c0107244102e74e113 (patch) | |
tree | 36d8b7ddd770814970ee1432def47ffad9d12f38 | |
parent | f51c126c9dd672a301230d80202a536202ffed58 (diff) | |
download | tcl-b42de3a4f38cb8f3837142c0107244102e74e113.zip tcl-b42de3a4f38cb8f3837142c0107244102e74e113.tar.gz tcl-b42de3a4f38cb8f3837142c0107244102e74e113.tar.bz2 |
Revise "levelReference" ObjType to use proposed routines.
-rw-r--r-- | generic/tclProc.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/generic/tclProc.c b/generic/tclProc.c index 570e5ba..6307002 100644 --- a/generic/tclProc.c +++ b/generic/tclProc.c @@ -841,6 +841,7 @@ TclObjGetFrame( { register Interp *iPtr = (Interp *) interp; int curLevel, level, result; + const Tcl_ObjIntRep *irPtr; const char *name = NULL; /* @@ -861,16 +862,17 @@ TclObjGetFrame( && (level >= 0)) { level = curLevel - level; result = 1; - } else if (objPtr->typePtr == &levelReferenceType) { - level = (int) objPtr->internalRep.longValue; + } else if ((irPtr = Tcl_FetchIntRep(objPtr, &levelReferenceType))) { + level = irPtr->longValue; result = 1; } else { name = TclGetString(objPtr); if (name[0] == '#') { if (TCL_OK == Tcl_GetInt(NULL, name+1, &level) && level >= 0) { - TclFreeIntRep(objPtr); - objPtr->typePtr = &levelReferenceType; - objPtr->internalRep.longValue = level; + Tcl_ObjIntRep ir; + + ir.longValue = level; + Tcl_StoreIntRep(objPtr, &levelReferenceType, &ir); result = 1; } else { result = -1; |