Index: generic/nsf.c =================================================================== diff -u -r0c9b20f1cb06b0507ef76608bba64c6ca5a3710b -r09b9e7c9820edd978dceafc168e99de9ef537e5a --- generic/nsf.c (.../nsf.c) (revision 0c9b20f1cb06b0507ef76608bba64c6ca5a3710b) +++ generic/nsf.c (.../nsf.c) (revision 09b9e7c9820edd978dceafc168e99de9ef537e5a) @@ -14350,7 +14350,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); }