Index: generic/nsf.c =================================================================== diff -u -r2dca7abdd5d83421b31b220bc6dabba1047d68fb -r929db54ebd7cf84befee362a94c1b9e1a32a041d --- generic/nsf.c (.../nsf.c) (revision 2dca7abdd5d83421b31b220bc6dabba1047d68fb) +++ generic/nsf.c (.../nsf.c) (revision 929db54ebd7cf84befee362a94c1b9e1a32a041d) @@ -19690,16 +19690,27 @@ return TCL_ERROR; } + /* + * Upon [interp create], set up NSF for the new child interp by running + * Nsf_Init() + */ + if (isCreateString(name)) { + Tcl_Obj *slaveCmdObj; + Tcl_Interp *slavePtr; + /* - * The command was an interp create, so perform an Nsf_Init() on - * the new interpreter. + * Tcl_InterpObjCmd() stores the newly created child interp's command name + * in the interp result store. */ - Tcl_Interp *slave = Tcl_GetSlave(interp, ObjStr(objv[2])); - if (!slave) { + + slaveCmdObj = Tcl_GetObjResult(interp); + slavePtr = Tcl_GetSlave(interp, ObjStr(slaveCmdObj)); + + if (!slavePtr) { return NsfPrintError(interp, "creation of slave interpreter failed"); } - if (Nsf_Init(slave) == TCL_ERROR) { + if (Nsf_Init(slavePtr) == TCL_ERROR) { return TCL_ERROR; } }