diff options
author | jan.nijtmans <nijtmans@users.sourceforge.net> | 2018-06-14 18:31:24 (GMT) |
---|---|---|
committer | jan.nijtmans <nijtmans@users.sourceforge.net> | 2018-06-14 18:31:24 (GMT) |
commit | 14994d8a856c6e59890aad6023793a6760c98e1a (patch) | |
tree | 1c5559c8ce5c44ad2f0275b5c0bc56d0c65cbab8 /generic/tclVar.c | |
parent | 5e1789954df3a512ab8d71df2c60ffb6ea72b777 (diff) | |
parent | 919ec44584344d71c8ddad8d14d58adfdec28e8b (diff) | |
download | tcl-14994d8a856c6e59890aad6023793a6760c98e1a.zip tcl-14994d8a856c6e59890aad6023793a6760c98e1a.tar.gz tcl-14994d8a856c6e59890aad6023793a6760c98e1a.tar.bz2 |
Merge trunk. Some more size_t additions in parameters/fields
Diffstat (limited to 'generic/tclVar.c')
-rw-r--r-- | generic/tclVar.c | 33 |
1 files changed, 29 insertions, 4 deletions
diff --git a/generic/tclVar.c b/generic/tclVar.c index 7eca910..3bae78f 100644 --- a/generic/tclVar.c +++ b/generic/tclVar.c @@ -6323,25 +6323,50 @@ AppendLocals( } if (iPtr->varFramePtr->isProcCallFrame & FRAME_IS_METHOD) { - CallContext *contextPtr = iPtr->varFramePtr->clientData; - Method *mPtr = contextPtr->callPtr->chain[contextPtr->index].mPtr; + Method *mPtr = (Method *) + Tcl_ObjectContextMethod(iPtr->varFramePtr->clientData); + PrivateVariableMapping *privatePtr; if (mPtr->declaringObjectPtr) { - FOREACH(objNamePtr, mPtr->declaringObjectPtr->variables) { + Object *oPtr = mPtr->declaringObjectPtr; + + FOREACH(objNamePtr, oPtr->variables) { Tcl_CreateHashEntry(&addedTable, objNamePtr, &added); if (added && (!pattern || Tcl_StringMatch(TclGetString(objNamePtr), pattern))) { Tcl_ListObjAppendElement(interp, listPtr, objNamePtr); } } + FOREACH_STRUCT(privatePtr, oPtr->privateVariables) { + Tcl_CreateHashEntry(&addedTable, privatePtr->variableObj, + &added); + if (added && (!pattern || + Tcl_StringMatch(TclGetString(privatePtr->variableObj), + pattern))) { + Tcl_ListObjAppendElement(interp, listPtr, + privatePtr->variableObj); + } + } } else { - FOREACH(objNamePtr, mPtr->declaringClassPtr->variables) { + Class *clsPtr = mPtr->declaringClassPtr; + + FOREACH(objNamePtr, clsPtr->variables) { Tcl_CreateHashEntry(&addedTable, objNamePtr, &added); if (added && (!pattern || Tcl_StringMatch(TclGetString(objNamePtr), pattern))) { Tcl_ListObjAppendElement(interp, listPtr, objNamePtr); } } + FOREACH_STRUCT(privatePtr, clsPtr->privateVariables) { + Tcl_CreateHashEntry(&addedTable, privatePtr->variableObj, + &added); + if (added && (!pattern || + Tcl_StringMatch(TclGetString(privatePtr->variableObj), + pattern))) { + Tcl_ListObjAppendElement(interp, listPtr, + privatePtr->variableObj); + } + } } } Tcl_DeleteHashTable(&addedTable); |