cvs: php4 /sapi/apache2filter sapi_apache2.c
| From: | Moriyoshi Koizumi | Date: | Wed, 18 Dec 2002 19:32:44 +0000 |
| Subject: | cvs: php4 /sapi/apache2filter sapi_apache2.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-17260@lists.php.net to get a copy of this message | ||
moriyoshi Wed Dec 18 14:32:44 2002 EDT
Modified files:
/php4/sapi/apache2filter sapi_apache2.c
Log:
An intuitive attempt to hunt the bug.
Index: php4/sapi/apache2filter/sapi_apache2.c
diff -u php4/sapi/apache2filter/sapi_apache2.c:1.93 php4/sapi/apache2filter/sapi_apache2.c:1.94
--- php4/sapi/apache2filter/sapi_apache2.c:1.93 Mon Dec 9 13:45:32 2002
+++ php4/sapi/apache2filter/sapi_apache2.c Wed Dec 18 14:32:44 2002
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: sapi_apache2.c,v 1.93 2002/12/09 18:45:32 iliaa Exp $ */
+/* $Id: sapi_apache2.c,v 1.94 2002/12/18 19:32:44 moriyoshi Exp $ */
#include <fcntl.h>
@@ -310,6 +310,8 @@
apr_bucket *b;
const char *str;
apr_size_t n;
+ const char *prev_fetched_str;
+ apr_size_t prev_fetched_str_len;
apr_status_t rv;
TSRMLS_FETCH();
@@ -328,8 +330,25 @@
return rv;
}
+ prev_fetched_str = NULL;
+ prev_fetched_str_len = -1;
+
for (b = APR_BRIGADE_FIRST(bb); b != APR_BRIGADE_SENTINEL(bb); b = APR_BUCKET_NEXT(b)) {
apr_bucket_read(b, &str, &n, 1);
+ if (APR_BUCKET_IS_HEAP(b)) {
+ if ((str == prev_fetched_str && n == prev_fetched_str_len)) {
+ char *brigade_dump = NULL;
+ apr_bucket *tmp;
+
+ for (tmp = APR_BRIGADE_FIRST(bb); tmp != APR_BRIGADE_SENTINEL(bb); tmp = APR_BUCKET_NEXT(tmp))
{
+ brigade_dump = apr_psprintf(f->r->pool, "%s[%s %x] ", (brigade_dump ?
brigade_dump: ""), tmp->type->name, (int)tmp);
+ }
+
+ ap_log_error(APLOG_MARK, APLOG_WARNING, 0, 0, "* BUG * You encountered an apr bug. Please
contact to php-dev@lists.php.net with the following information: %s", (brigade_dump ?
brigade_dump: "(empty)"));
+ }
+ prev_fetched_str = str;
+ prev_fetched_str_len = n;
+ }
if (n > 0) {
old_index = ctx->post_len;
ctx->post_len += n;