You are viewing a plain text version of this content. The canonical link for it is here.
Posted to websh-cvs@tcl.apache.org by ro...@apache.org on 2006/03/05 02:08:46 UTC
svn commit: r383261 - in /tcl/websh/trunk/src/generic: request.c request.h
Author: ronnie
Date: Sat Mar 4 17:08:46 2006
New Revision: 383261
URL: http://svn.apache.org/viewcvs?rev=383261&view=rev
Log:
- added exit handler to destroy requestData on regular
exit (make sure tempfiles get cleaned up properly in CGI mode,
at least when process is not killed or anything)
Modified:
tcl/websh/trunk/src/generic/request.c
tcl/websh/trunk/src/generic/request.h
Modified: tcl/websh/trunk/src/generic/request.c
URL: http://svn.apache.org/viewcvs/tcl/websh/trunk/src/generic/request.c?rev=383261&r1=383260&r2=383261&view=diff
==============================================================================
--- tcl/websh/trunk/src/generic/request.c (original)
+++ tcl/websh/trunk/src/generic/request.c Sat Mar 4 17:08:46 2006
@@ -26,10 +26,10 @@
#include <sys/errno.h>
#endif
-/*void dRequestData(ClientData clientData)
+void destroyRequestDataHook(ClientData clientData)
{
destroyRequestData(clientData, NULL);
-}*/
+}
/* ----------------------------------------------------------------------------
* Init --
@@ -83,11 +83,12 @@
destroyRequestData, (ClientData) requestData);
/* -------------------------------------------------------------------------
- * need an exit handler too (if this is the main interp)
+ * we need an exit handler (if this is the main interp)
+ * because we need to delete temp files on regular exit too
* ---------------------------------------------------------------------- */
- /*fixme: do we really need this? (it's leaking memory) */
- /*if (Tcl_GetMaster(interp) == NULL)
- Tcl_CreateThreadExitHandler(dRequestData, (ClientData) requestData);*/
+ if (Tcl_GetMaster(interp) == NULL) {
+ Tcl_CreateExitHandler(destroyRequestDataHook, (ClientData) requestData);
+ }
/* -------------------------------------------------------------------------
* done
@@ -240,6 +241,9 @@
if (clientData != NULL) {
requestData = (RequestData *) clientData;
+
+ /* delete exit handler to prevent memory leak */
+ Tcl_DeleteExitHandler(destroyRequestDataHook, (ClientData) requestData);
WebDecrRefCountIfNotNull(requestData->cmdTag);
WebDecrRefCountIfNotNull(requestData->timeTag);
Modified: tcl/websh/trunk/src/generic/request.h
URL: http://svn.apache.org/viewcvs/tcl/websh/trunk/src/generic/request.h?rev=383261&r1=383260&r2=383261&view=diff
==============================================================================
--- tcl/websh/trunk/src/generic/request.h (original)
+++ tcl/websh/trunk/src/generic/request.h Sat Mar 4 17:08:46 2006
@@ -105,7 +105,7 @@
RequestData;
-/*void dRequestData(ClientData clientData);*/
+void destroyRequestDataHook(ClientData clientData);
RequestData *createRequestData(Tcl_Interp * interp);
int resetRequestData(Tcl_Interp * interp, RequestData * requestData);
---------------------------------------------------------------------
To unsubscribe, e-mail: websh-cvs-unsubscribe@tcl.apache.org
For additional commands, e-mail: websh-cvs-help@tcl.apache.org