rem: Tcl_SetResult(itPtr->interp, output.string, TCL_VOLATILE);
context: NsAdpEval(NsInterp *itPtr, int objc, Tcl_Obj *objv[], int safe, char *resvar){    AdpParse	      parse;    Frame             frame;    Tcl_DString       output;    int               result;    Tcl_Obj          *resPtr;    bool              lcl_resp = NS_FALSE;        /*     * Push a frame, execute the code, and then move any result to the     * interp from the local output buffer.     */         Tcl_DStringInit(&output);    /*     * If we are not acting within a context which has set up the adp     * output buffer, then hook the responsePtr to our lcl buffer     * for the processing of this request.  It will be unhooked after.     */    if (itPtr->adp.responsePtr == NULL) {        itPtr->adp.responsePtr = &output;        lcl_resp = NS_TRUE;    }    PushFrame(itPtr, &frame, NULL, objc, objv, &output);    NsAdpParse(&parse, itPtr->servPtr, Tcl_GetString(objv[0]), safe);    result = AdpEval(itPtr, &parse.code, NULL);    PopFrame(itPtr, &frame);    if (lcl_resp) {        itPtr->adp.responsePtr = NULL;    }    /*     * If the caller has supplied a variable for the adp's result value,     * then save the interp's result there prior to overwritting it.     */    if (resvar != NULL) {        resPtr = Tcl_GetObjResult(itPtr->interp);        if (Tcl_SetVar2Ex(itPtr->interp, resvar, NULL, resPtr,                           TCL_LEAVE_ERR_MSG) == NULL) {            return TCL_ERROR;        }    }    Tcl_SetResult(itPtr->interp, output.string, TCL_VOLATILE);    Tcl_DStringFree(&output);    ParseFree(&parse);    return result;}