Index: generic/nsf.c =================================================================== diff -u -reb3b441c21e2cdb8fb3e056ce8c6137f4ddea9df -r2bd98681b601558d5215a74f42cb70e59304e1f4 --- generic/nsf.c (.../nsf.c) (revision eb3b441c21e2cdb8fb3e056ce8c6137f4ddea9df) +++ generic/nsf.c (.../nsf.c) (revision 2bd98681b601558d5215a74f42cb70e59304e1f4) @@ -17569,24 +17569,22 @@ char trailingChar = *(option+12); if (trailingChar == '=') { - Tcl_Obj *ov[2]; + Tcl_Obj *resultObj, *exprObj; - ov[0] = NULL; - ov[1] = Tcl_NewStringObj(option + 13, (int)optionLength - 13); - INCR_REF_COUNT(ov[1]); - result = Nsf_ExprObjCmd(NULL, interp, 2, ov); - DECR_REF_COUNT(ov[1]); + exprObj = Tcl_NewStringObj(option + 13, (int)optionLength - 13); + INCR_REF_COUNT(exprObj); + result = Tcl_ExprObj(interp, exprObj, &resultObj); + DECR_REF_COUNT(exprObj); if (result == TCL_OK) { - Tcl_Obj *resultObj = Tcl_GetObjResult(interp); - if ((Tcl_GetIntFromObj(interp, resultObj, &substDefaultFlags) != TCL_OK) || (substDefaultFlags < 0) || (substDefaultFlags > 7) ) { return NsfPrintError(interp, "parameter option 'substdefault=' must be a value between 0b000 and 0b111: %s", option); } + DECR_REF_COUNT(resultObj); } else { return NsfPrintError(interp, "substdefault expression failed: %s", ObjStr(Tcl_GetObjResult(interp))); }