rasmus Mon Jul 25 18:38:11 2005 EDT
Modified files: /php-src NEWS
/php-src/sapi/apache2handler sapi_apache2.c Log:
MFB fix for bug #33690
http://cvs.php.net/diff.php/php-src/NEWS?r1=1.2006&r2=1.2007&ty=u
Index: php-src/NEWS
diff -u php-src/NEWS:1.2006 php-src/NEWS:1.2007
--- php-src/NEWS:1.2006 Sat Jul 23 19:34:02 2005
+++ php-src/NEWS Mon Jul 25 18:38:10 2005
@@ -1,6 +1,7 @@
PHP
NEWS
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
?? ??? 2005, PHP 5.1
+- Fixed bug #33690 (Crash setting some ini directives in httpd.conf).
(Rasmus)
- Fixed bug #33841 (pdo sqlite driver forgets to update affected column
count
on execution of prepared statments).
- Fixed bug #33802 (throw Exception in error handler causes crash).
(Dmitry)
http://cvs.php.net/diff.php/php-src/sapi/apache2handler/sapi_apache2.c?r1=1.55&r2=1.56&ty=u
Index: php-src/sapi/apache2handler/sapi_apache2.c
diff -u php-src/sapi/apache2handler/sapi_apache2.c:1.55
php-src/sapi/apache2handler/sapi_apache2.c:1.56
--- php-src/sapi/apache2handler/sapi_apache2.c:1.55 Mon Jun 20 08:46:34
2005
+++ php-src/sapi/apache2handler/sapi_apache2.c Mon Jul 25 18:38:11
2005
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: sapi_apache2.c,v 1.55 2005/06/20 12:46:34 tony2001 Exp $ */
+/* $Id: sapi_apache2.c,v 1.56 2005/07/25 22:38:11 rasmus Exp $ */
#define ZEND_INCLUDE_FULL_WINDOWS_HEADERS
@@ -454,6 +454,21 @@
TSRMLS_FETCH();
conf = ap_get_module_config(r->per_dir_config, &php5_module);
+
+ /* apply_config() needs r in some cases, so allocate server_context
early */
+ ctx = SG(server_context);
+ if (ctx == NULL) {
+ ctx = SG(server_context) = apr_pcalloc(r->pool, sizeof(*ctx));
+ /* register a cleanup so we clear out the SG(server_context)
+ * after each request. Note: We pass in the pointer to the
+ * server_context in case this is handled by a different
thread.
+ */
+ apr_pool_cleanup_register(r->pool, (void
*)&SG(server_context), php_server_context_cleanup, apr_pool_cleanup_null);
+ ctx->r = r;
+ ctx = NULL; /* May look weird to null it here, but it is to
catch the right case in the first_try later on */
+ } else {
+ ctx->r = r;
+ }
apply_config(conf);
if (strcmp(r->handler, PHP_MAGIC_TYPE) && strcmp(r->handler,
PHP_SOURCE_MAGIC_TYPE) && strcmp(r->handler, PHP_SCRIPT)) {
@@ -511,17 +526,9 @@
zend_first_try {
- ctx = SG(server_context);
if (ctx == NULL) {
- ctx = SG(server_context) = apr_pcalloc(r->pool, sizeof(*ctx));
- /* register a cleanup so we clear out the SG(server_context)
- * after each request. Note: We pass in the pointer to the
- * server_context in case this is handled by a different
thread.
- */
- apr_pool_cleanup_register(r->pool, (void
*)&SG(server_context), php_server_context_cleanup, apr_pool_cleanup_null);
-
- ctx->r = r;
brigade = apr_brigade_create(r->pool,
r->connection->bucket_alloc);
+ ctx = SG(server_context);
ctx->brigade = brigade;
if (php_apache_request_ctor(r, ctx TSRMLS_CC)!=SUCCESS) {