Index: appfsd.c ================================================================== --- appfsd.c +++ appfsd.c @@ -1152,19 +1152,27 @@ APPFS_DEBUG("Error creating an interpreter."); return; } - appfs_call_libtcl(scriptObj = Tcl_NewStringObj(script, scriptLen);) + appfs_call_libtcl( + scriptObj = Tcl_NewStringObj(script, scriptLen); + + Tcl_IncrRefCount(scriptObj); + ) if (scriptObj == NULL) { APPFS_DEBUG("Error creating a script object."); return; } - appfs_call_libtcl(tcl_ret = Tcl_EvalObjEx(interp, scriptObj, TCL_EVAL_DIRECT);) + appfs_call_libtcl( + tcl_ret = Tcl_EvalObjEx(interp, scriptObj, TCL_EVAL_DIRECT); + Tcl_DecrRefCount(scriptObj); + ) + if (tcl_ret != TCL_OK) { appfs_call_libtcl( APPFS_DEBUG("Script returned error %i: %s", tcl_ret, Tcl_GetStringResult(interp)); ) }