Index: generic/nsf.c =================================================================== diff -u -r0739b9321294b0f8bbef0d434ae5928aee092df5 -r253e9e67adc09d0ade5c483f0eed9f49ba5ec185 --- generic/nsf.c (.../nsf.c) (revision 0739b9321294b0f8bbef0d434ae5928aee092df5) +++ generic/nsf.c (.../nsf.c) (revision 253e9e67adc09d0ade5c483f0eed9f49ba5ec185) @@ -11767,27 +11767,29 @@ static Tcl_Obj * ParamDefsNames(Tcl_Interp *interp, Nsf_Param const *paramsPtr, NsfObject *contextObject, const char *pattern) { - Tcl_Obj *listObj = Tcl_NewListObj(0, NULL), *obj; + Tcl_Obj *listObj = Tcl_NewListObj(0, NULL); nonnull_assert(interp != NULL); nonnull_assert(paramsPtr != NULL); INCR_REF_COUNT2("paramDefsObj", listObj); for (; likely(paramsPtr->name != NULL); paramsPtr++) { + const char* paramName; + if ((paramsPtr->flags & NSF_ARG_NOCONFIG) != 0u) { continue; } if (NsfParamDefsAppendVirtual(interp, listObj, paramsPtr, contextObject, pattern, ParamDefsNames)) { continue; } - obj = (paramsPtr->nameObj != NULL) ? paramsPtr->nameObj : Tcl_NewStringObj(paramsPtr->name, -1); - if (pattern && !Tcl_StringMatch(ObjStr(obj), pattern)) { + paramName = *paramsPtr->name == '-' ? paramsPtr->name+1 : paramsPtr->name; + if (pattern && !Tcl_StringMatch(paramName, pattern)) { continue; } - - Tcl_ListObjAppendElement(interp, listObj, obj); + Tcl_ListObjAppendElement(interp, listObj, (paramsPtr->nameObj != NULL) ? + paramsPtr->nameObj : Tcl_NewStringObj(paramsPtr->name, -1)); } return listObj;