Index: generic/nsfCmdPtr.c =================================================================== diff -u -r2e1a88ed8dfe12a82274e26f1e79156d69b618fc -r16a02881bff0a0d626d0045dfd96660338d0c314 --- generic/nsfCmdPtr.c (.../nsfCmdPtr.c) (revision 2e1a88ed8dfe12a82274e26f1e79156d69b618fc) +++ generic/nsfCmdPtr.c (.../nsfCmdPtr.c) (revision 16a02881bff0a0d626d0045dfd96660338d0c314) @@ -43,27 +43,29 @@ static NSF_INLINE ClientData NsfGetClientDataFromCmdPtr(Tcl_Command cmd) { - assert(cmd != NULL); + nonnull_assert(cmd != NULL); /*fprintf(stderr, "objProc=%p %p\n", Tcl_Command_objProc(cmd),NsfObjDispatch);*/ if (likely(Tcl_Command_objProc(cmd) == NsfObjDispatch)) { return Tcl_Command_objClientData(cmd); + } else { - cmd = TclGetOriginalCommand(cmd); - if (likely(cmd != NULL) && unlikely(Tcl_Command_objProc(cmd) == NsfObjDispatch)) { - /*fprintf(stderr, "???? got cmd right in 2nd round\n");*/ - return Tcl_Command_objClientData(cmd); + Tcl_Command cmd1 = TclGetOriginalCommand(cmd); + + if (likely(cmd1 != NULL) && unlikely(Tcl_Command_objProc(cmd1) == NsfObjDispatch)) { + return Tcl_Command_objClientData(cmd1); } return NULL; } } static NSF_INLINE NsfClass* NsfGetClassFromCmdPtr(Tcl_Command cmd) { - ClientData cd = NsfGetClientDataFromCmdPtr(cmd); + ClientData cd; - assert(cmd != NULL); + nonnull_assert(cmd != NULL); + cd = NsfGetClientDataFromCmdPtr(cmd); /*fprintf(stderr, "cd=%p\n",cd);*/ if (likely(cd != NULL)) { return NsfObjectToClass(cd); @@ -75,7 +77,7 @@ static NSF_INLINE NsfObject* NsfGetObjectFromCmdPtr(Tcl_Command cmd) { - assert(cmd != NULL); + nonnull_assert(cmd != NULL); return (NsfObject*) NsfGetClientDataFromCmdPtr(cmd); }