Index: generic/nsf.c =================================================================== diff -u -r05303f65fdb9de786d8405ec199e9c59df7f1765 -rbb18837f55b64ecdaf970c9e77624bc30f4c417a --- generic/nsf.c (.../nsf.c) (revision 05303f65fdb9de786d8405ec199e9c59df7f1765) +++ generic/nsf.c (.../nsf.c) (revision bb18837f55b64ecdaf970c9e77624bc30f4c417a) @@ -256,6 +256,7 @@ static void ParamDefsFree(NsfParamDefs *paramDefs); static int ParamSetFromAny(Tcl_Interp *interp, register Tcl_Obj *objPtr); + /* prototypes for alias management */ static int AliasDelete(Tcl_Interp *interp, Tcl_Obj *cmdName, CONST char *methodName, int withPer_object); static Tcl_Obj *AliasGet(Tcl_Interp *interp, Tcl_Obj *cmdName, CONST char *methodName, int withPer_object); @@ -1226,9 +1227,10 @@ if (cmd && *methodName == ':') { CONST char *procName = Tcl_GetCommandName(interp, cmd); size_t objNameLength = strlen(methodName) - strlen(procName) - 2; - Tcl_DString ds, *dsPtr = &ds; if (objNameLength > 0) { + Tcl_DString ds, *dsPtr = &ds; + /* obtain parent name */ Tcl_DStringInit(dsPtr); Tcl_DStringAppend(dsPtr, methodName, objNameLength); regObject = GetObjectFromNsName(interp, Tcl_DStringValue(dsPtr), fromClassNS); @@ -7575,7 +7577,7 @@ Tcl_DString ds, *dsPtr = &ds; DSTRING_INIT(dsPtr); - Tcl_DStringAppend(dsPtr, className, strlen(className)-strlen(mn)-2); + Tcl_DStringAppend(dsPtr, className, strlen(className) - strlen(mn) - 2); cl = (NsfClass *)GetObjectFromString(interp, Tcl_DStringValue(dsPtr)); DSTRING_FREE(dsPtr); } @@ -10974,7 +10976,7 @@ NsfObject *object = cd->object; if (!object) return NsfObjErrType(interp, objv[0], "object", ObjStr(objv[0])); - if (objc > 2) return NsfObjErrArgCnt(interp, object->cmdName, objv[0], "?value?"); + if (objc > 2) return NsfObjWrongArgs(interp, "wrong # args", object->cmdName, objv[0], "?value?"); if (cd->paramsPtr && objc == 2) { Tcl_Obj *outObjPtr; @@ -11089,8 +11091,8 @@ /*fprintf(stderr, "inserting listElements[%d] '%s'\n", nrPosArgs, ObjStr(listElements[nrPosArgs]));*/ *out = listElements[nrPosArgs]; - } else if (objc<=1) { - return NsfObjErrArgCnt(interp, objv[0], NULL, "option"); + } else if (objc <= 1) { + return NsfObjWrongArgs(interp, "wrong # args", objv[0], NULL, "option"); } else { /*fprintf(stderr, "copying %%1: '%s'\n", ObjStr(objv[firstPosArg]));*/ *out = objv[firstPosArg]; @@ -12054,7 +12056,7 @@ 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, ObjStr(objv[pcPtr->lastobjc+1]), -1); Tcl_DStringAppend(dsPtr, "', maybe too many arguments;", -1); return ArgumentError(interp, Tcl_DStringValue(dsPtr), paramPtr, object ? object->cmdName : NULL, @@ -13193,13 +13195,8 @@ } if (newCmd) { - Tcl_DString ds, *dsPtr = &ds; + AliasAdd(interp, object->cmdName, methodName, cl == NULL, ObjStr(cmdName)); - Tcl_DStringInit(dsPtr); - Tcl_DStringAppend(dsPtr, ObjStr(cmdName), -1); - AliasAdd(interp, object->cmdName, methodName, cl == NULL, Tcl_DStringValue(dsPtr)); - Tcl_DStringFree(dsPtr); - if (withFrame == FrameMethodIdx) { Tcl_Command_flags(newCmd) |= NSF_CMD_NONLEAF_METHOD; /*fprintf(stderr, "setting aliased for cmd %p %s flags %.6x, tcd = %p\n",