You are viewing a plain text version of this content. The canonical link for it is here.
Posted to rivet-dev@tcl.apache.org by ka...@apache.org on 2009/05/07 04:48:49 UTC
svn commit: r772489 - /tcl/rivet/trunk/src/apache-2/mod_rivet.c
Author: karl
Date: Thu May 7 02:48:49 2009
New Revision: 772489
URL: http://svn.apache.org/viewvc?rev=772489&view=rev
Log:
Correct bug in last commit. Now it works (Apache 2 anyway).
Modified:
tcl/rivet/trunk/src/apache-2/mod_rivet.c
Modified: tcl/rivet/trunk/src/apache-2/mod_rivet.c
URL: http://svn.apache.org/viewvc/tcl/rivet/trunk/src/apache-2/mod_rivet.c?rev=772489&r1=772488&r2=772489&view=diff
==============================================================================
--- tcl/rivet/trunk/src/apache-2/mod_rivet.c (original)
+++ tcl/rivet/trunk/src/apache-2/mod_rivet.c Thu May 7 02:48:49 2009
@@ -1281,13 +1281,16 @@
//errmsg = (char *) apr_pstrdup(p, "Error in child exit script: %s");
}
- sr = s;
- while (sr)
+ for (sr = s; sr; sr = sr->next)
{
rsc = RIVET_SERVER_CONF(sr->module_config);
function = init ? rsc->rivet_child_init_script :
rsc->rivet_child_exit_script;
+ if (!init && sr == s) {
+ Tcl_Preserve(rsc->server_interp);
+ }
+
/* Execute it if it exists and it's the top level, separate
* virtual interps are turned on, or it's different than the
* main script. */
@@ -1309,20 +1312,20 @@
Tcl_Release (rsc->server_interp);
}
- sr = sr->next;
+ }
- if (!init) {
- /*
- * Upon child exit we delete the master interpreter before the
- * caller invokes Tcl_Finalize. Even if we're running separate
- * virtual interpreters, we don't delete the slaves
- * as deleting the master implicitly deltes its slave interpreters.
- */
- rsc = RIVET_SERVER_CONF(s->module_config);
- if (!Tcl_InterpDeleted (rsc->server_interp)) {
- Tcl_DeleteInterp(rsc->server_interp);
- }
+ if (!init) {
+ /*
+ * Upon child exit we delete the master interpreter before the
+ * caller invokes Tcl_Finalize. Even if we're running separate
+ * virtual interpreters, we don't delete the slaves
+ * as deleting the master implicitly deltes its slave interpreters.
+ */
+ rsc = RIVET_SERVER_CONF(s->module_config);
+ if (!Tcl_InterpDeleted (rsc->server_interp)) {
+ Tcl_DeleteInterp(rsc->server_interp);
}
+ Tcl_Release (rsc->server_interp);
}
}
/*
---------------------------------------------------------------------
To unsubscribe, e-mail: rivet-cvs-unsubscribe@tcl.apache.org
For additional commands, e-mail: rivet-cvs-help@tcl.apache.org