Index: generic/nsf.c =================================================================== diff -u -rf4c0008af1841b4c67fd34cd6646df02f310e297 -rf3ca6a10607cb65dcafcae9692f4cd696972b480 --- generic/nsf.c (.../nsf.c) (revision f4c0008af1841b4c67fd34cd6646df02f310e297) +++ generic/nsf.c (.../nsf.c) (revision f3ca6a10607cb65dcafcae9692f4cd696972b480) @@ -17482,7 +17482,7 @@ nobjv = (Tcl_Obj **)ckalloc(sizeof(Tcl_Obj *) * nobjc); MEM_COUNT_ALLOC("nextArgumentVector", nobjv); /* - * copy the ensemble path name + * Copy the ensemble path name */ memcpy((char *)nobjv, cscPtr->objv, sizeof(Tcl_Obj *) * methodNameLength); @@ -17492,30 +17492,28 @@ nobjv = (Tcl_Obj **)ckalloc(sizeof(Tcl_Obj *) * nobjc); MEM_COUNT_ALLOC("nextArgumentVector", nobjv); /* - * copy the method name + * Copy the method name */ if (cscPtr->objv != NULL) { nobjv[0] = cscPtr->objv[0]; } else if (Tcl_CallFrame_objv(framePtr)) { nobjv[0] = Tcl_CallFrame_objv(framePtr)[0]; } } - /* - * copy the remaining argument vector - */ -#if defined(NDEBUG) - if (objv == NULL) { - assert(cscPtr->objv != NULL); + if (objc > 0) { + /* + * Copy the remaining argument vector + */ + assert((objv != NULL) || (cscPtr->objv != NULL)); + memcpy(nobjv + methodNameLength, objv == NULL ? cscPtr->objv : objv, sizeof(Tcl_Obj *) * objc); } -#endif - memcpy(nobjv + methodNameLength, objv == NULL ? cscPtr->objv : objv, sizeof(Tcl_Obj *) * objc); INCR_REF_COUNT(nobjv[0]); /* we seem to need this here */ *freeArgumentVector = 1; } else { /* - * no arguments were provided + * No arguments were provided */ if (cscPtr->objv != NULL) { nobjv = (Tcl_Obj **)cscPtr->objv;