in src/generic/modwebsh_ap.c [129:184]
int Web_Finalize_AP(ClientData clientData,
Tcl_Interp * interp, int objc, Tcl_Obj * CONST objv[])
{
WebInterp *webInterp = (WebInterp *) clientData;
int res = TCL_OK;
int len = -1;
int i = 0;
Tcl_Obj *tobj = NULL;
if (webInterp == NULL)
return TCL_ERROR;
if (webInterp->interp == NULL)
return TCL_ERROR;
if (webInterp->dtor == NULL)
return TCL_OK;
res = Tcl_ListObjLength(webInterp->interp, webInterp->dtor, &len);
if (res == TCL_OK) {
for (i = (len - 1); i >= 0; i--) {
/* call finalizers in turn */
res =
Tcl_ListObjIndex(webInterp->interp, webInterp->dtor, i,
&tobj);
if ((res == TCL_OK) && (tobj != NULL)) {
/* printf("DBG Finalize: calling \"%s\"\n",Tcl_GetString(tobj)); fflush(stdout); */
Tcl_IncrRefCount(tobj);
res = Tcl_EvalObjEx(webInterp->interp, tobj, 0);
Tcl_DecrRefCount(tobj);
/* Tcl_ResetResult(webInterp->interp); */
if (res != TCL_OK) {
/* fprintf(stderr,"DBG Finalize -- PROBLEM: %s\n",Tcl_GetStringResult(webInterp->interp)); fflush(stderr); */
LOG_MSG(webInterp->interp, WRITE_LOG | INTERP_ERRORINFO,
__FILE__, __LINE__,
"web::finalize", WEBLOG_ERROR,
"error evaluating \"", Tcl_GetString(tobj), "\"",
NULL);
continue;
}
}
}
/* printf("DBG Finalize -- done\n"); fflush(stdout); */
}
return res;
}