Index: generic/nsf.c =================================================================== diff -u -rc1ac4a3f2987f5ff235083261800bcb85cc4463f -r2d3e0da7e6a7d8f9811ad22598fde7ede516e010 --- generic/nsf.c (.../nsf.c) (revision c1ac4a3f2987f5ff235083261800bcb85cc4463f) +++ generic/nsf.c (.../nsf.c) (revision 2d3e0da7e6a7d8f9811ad22598fde7ede516e010) @@ -14355,7 +14355,9 @@ int length; tailMethodObj = objv[1]; - if (Tcl_ListObjLength(interp, objv[1], &length) == TCL_OK) { + if ((((object->flags & NSF_KEEP_CALLER_SELF) != 0u) || + ((object->flags & NSF_PER_OBJECT_DISPATCH) != 0u)) && + Tcl_ListObjLength(interp, objv[1], &length) == TCL_OK) { if (length > 1) { Tcl_ListObjIndex(interp, objv[1], length - 1, &tailMethodObj); }