Index: generic/nsf.c =================================================================== diff -u -rdb2dcddd4328ce68ddf06905ffccda392fb1aa0f -r1b583476882fea7df04664f551cf87d99c8a0da0 --- generic/nsf.c (.../nsf.c) (revision db2dcddd4328ce68ddf06905ffccda392fb1aa0f) +++ generic/nsf.c (.../nsf.c) (revision 1b583476882fea7df04664f551cf87d99c8a0da0) @@ -11606,10 +11606,22 @@ * Handle missing or unexpected arguments for methods and cmds */ if (pcPtr->lastobjc < nrReq) { - return ArgumentError(interp, "not enough arguments:", paramPtr, NULL, procNameObj); + return ArgumentError(interp, "not enough arguments:", paramPtr, + object ? object->cmdName : NULL, + procNameObj); } if (!pcPtr->varArgs && objc-nrDashdash-1 > nrReq + nrOpt) { - return ArgumentError(interp, "too many arguments:", paramPtr, NULL, procNameObj); + Tcl_DString ds, *dsPtr = &ds; + DSTRING_INIT(dsPtr); + Tcl_DStringAppend(dsPtr, "Invalid argument '", -1); + Tcl_DStringAppend(dsPtr, ObjStr(objv[pcPtr->lastobjc]), -1); + Tcl_DStringAppend(dsPtr, "', maybe too many arguments;", -1); + fprintf(stderr, "processing %s\n",ObjStr(objv[pcPtr->lastobjc])); + return ArgumentError(interp, Tcl_DStringValue(dsPtr), paramPtr, + object ? object->cmdName : NULL, + procNameObj); + DSTRING_FREE(dsPtr); + return TCL_ERROR; } return ArgumentDefaults(pcPtr, interp, paramPtr, nrParams);