With a threaded MPM of httpd-2.0, the userdata wouldn't have its
state stored properly (it'd always be NULL). Therefore, the
server would fail in odd ways later on. tsrm_startup() would
never be called and would segfault in php_post_read_request when
it tried to acquire the NULL mutex.
This changes it from a setn call to a set call - it'll copy
the 1 and 2 into the hash's pool-allocated memory. The setn is
bogus because the storage space of the 1 and 2 aren't guaranteed
to be long-lived. (Look at how mod_rewrite does it.) -- justin
Index: sapi/apache2filter/sapi_apache2.c
===================================================================
RCS file: /repository/php4/sapi/apache2filter/sapi_apache2.c,v
retrieving revision 1.74
diff -u -r1.74 sapi_apache2.c
--- sapi/apache2filter/sapi_apache2.c 24 Apr 2002 00:55:38 -0000 1.74
+++ sapi/apache2filter/sapi_apache2.c 5 May 2002 10:26:25 -0000
@@ -454,15 +454,15 @@
* prevents us from starting PHP until the second load. */
apr_pool_userdata_get(&data, userdata_key, s->process->pool);
if (data == NULL) {
- apr_pool_userdata_setn((const void *)1, userdata_key,
- apr_pool_cleanup_null,
s->process->pool);
+ apr_pool_userdata_set((const void *)1, userdata_key,
+ apr_pool_cleanup_null,
+s->process->pool);
return OK;
}
else if (data == (const void *)2) {
return OK;
}
- apr_pool_userdata_setn((const void *)2, userdata_key,
- apr_pool_cleanup_null,
s->process->pool);
+ apr_pool_userdata_set((const void *)2, userdata_key,
+ apr_pool_cleanup_null,
+s->process->pool);
/* Set up our overridden path. */
if (apache2_php_ini_path_override) {
--
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, visit: http://www.php.net/unsub.php