Index: generic/nsf.c =================================================================== diff -u -r216b4dd29425d7f4307b94ee8cd428a5dd7a361e -r515bb4c0ed4a2dad74c4a29c940b57a3e911845d --- generic/nsf.c (.../nsf.c) (revision 216b4dd29425d7f4307b94ee8cd428a5dd7a361e) +++ generic/nsf.c (.../nsf.c) (revision 515bb4c0ed4a2dad74c4a29c940b57a3e911845d) @@ -12801,7 +12801,7 @@ ObjStr(paramPtr->nameObj), ObjStr(newValue), result);*/ if (likely(result == TCL_OK)) { - if (paramPtr->flags & NSF_ARG_INITCMD && RUNTIME_STATE(interp)->doKeepinitcmd) { + if (paramPtr->flags & NSF_ARG_CMD && RUNTIME_STATE(interp)->doKeepinitcmd) { Tcl_ObjSetVar2(interp, paramPtr->nameObj, NULL, newValue, TCL_LEAVE_ERR_MSG|TCL_PARSE_PART1); } } @@ -16855,7 +16855,7 @@ */ if ((unlikely((doCheckArguments & NSF_ARGPARSE_CHECK) == 0) && (pPtr->flags & (NSF_ARG_IS_CONVERTER)) == 0 - ) || (pPtr->flags & (NSF_ARG_INITCMD|NSF_ARG_CMD))) { + ) || (pPtr->flags & (NSF_ARG_CMD))) { /* fprintf(stderr, "*** omit argument check for arg %s flags %.6x\n", pPtr->name, pPtr->flags); */ *clientData = ObjStr(objPtr); return TCL_OK; @@ -17020,7 +17020,8 @@ */ if (pPtr->type || unlikely(pPtr->flags & NSF_ARG_MULTIVALUED)) { int mustDecrList = 0; - if (unlikely(ArgumentCheck(interp, newValue, pPtr, + if (unlikely((pPtr->flags & NSF_ARG_INITCMD) == 0 && + ArgumentCheck(interp, newValue, pPtr, RUNTIME_STATE(interp)->doCheckArguments, &mustDecrList, &checkedData, &pcPtr->objv[i]) != TCL_OK)) { if (mustDecrNewValue) {