Index: generic/nsf.c =================================================================== diff -u -ra390a38437dec2a7c3461f9fadef108ebf74b928 -rf32527e58ada02a9089fa17e2d1a99bac89f9be9 --- generic/nsf.c (.../nsf.c) (revision a390a38437dec2a7c3461f9fadef108ebf74b928) +++ generic/nsf.c (.../nsf.c) (revision f32527e58ada02a9089fa17e2d1a99bac89f9be9) @@ -20371,27 +20371,26 @@ (pc.flags[i-1] & NSF_PC_IS_DEFAULT), ObjStr(pc.full_objv[i]), paramPtr->nrArgs);*/ - if ((object->flags & NSF_INIT_CALLED) && (pc.flags[i-1] & NSF_PC_IS_DEFAULT)) { + if (/*(object->flags & NSF_INIT_CALLED) &&*/ (pc.flags[i-1] & NSF_PC_IS_DEFAULT)) { Tcl_Obj *varObj; /* * Object parameter method calls (when the flag * NSF_ARG_METHOD_INVOCATION is set) do not set instance variables, so * we do not have to check for existing variables. */ - if (paramPtr->flags & NSF_ARG_METHOD_INVOCATION) { - continue; + if ((paramPtr->flags & NSF_ARG_METHOD_INVOCATION) == 0) { + varObj = Tcl_ObjGetVar2(interp, paramPtr->nameObj, NULL, TCL_PARSE_PART1); + if (varObj) { + /* + * The value exists already, ignore this parameter. + */ + /*fprintf(stderr, "a variable for %s exists already, " + "ignore param flags %.6x valueObj %p\n", + paramPtr->name, paramPtr->flags, pc.full_objv[i]);*/ + continue; + } } - - varObj = Tcl_ObjGetVar2(interp, paramPtr->nameObj, NULL, TCL_PARSE_PART1); - if (varObj) { - /* - * The value exists already, ignore this parameter. - */ - /*fprintf(stderr, "a variable for %s exists already, ignore param flags %.6x valueObj %p\n", - paramPtr->name, paramPtr->flags, pc.full_objv[i]);*/ - continue; - } } newValue = pc.full_objv[i]; @@ -20524,8 +20523,8 @@ } else { /*fprintf(stderr, "call alias %s with methodObj %s.%s oc %d, nrArgs %d '%s'\n", - paramPtr->name, ObjectName(object), ObjStr(methodObj), oc, - paramPtr->nrArgs, ObjStr(newValue));*/ + paramPtr->name, ObjectName(object), ObjStr(methodObj), oc, + paramPtr->nrArgs, ObjStr(newValue));*/ result = NsfCallMethodWithArgs(interp, (Nsf_Object*)object, methodObj, ov0, oc, ovPtr, NSF_CSC_IMMEDIATE); @@ -20633,10 +20632,11 @@ */ if (i < paramDefs->nrParams || !pc.varArgs) { #if defined(CONFIGURE_ARGS_TRACE) - fprintf(stderr, "*** %s SET %s '%s'\n", ObjectName(object), ObjStr(paramPtr->nameObj), ObjStr(newValue)); + fprintf(stderr, "*** %s SET %s '%s'\n", + ObjectName(object), ObjStr(paramPtr->nameObj), ObjStr(newValue)); #endif /* - * Actually set instance variable with the provided or default value. + * Actually set instance variable with the provided value or default value. */ Tcl_ObjSetVar2(interp, paramPtr->nameObj, NULL, newValue, TCL_LEAVE_ERR_MSG|TCL_PARSE_PART1); }