From: Edin Kadribasic Date: Fri, 25 Jun 2004 12:51:38 +0000 (+0000) Subject: Memory leak fix (patch by Joe Orton) X-Git-Tag: php-4.3.9RC1~75 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=435da1b34e86fcd97f44ea8e5c527b540963ce42;p=php Memory leak fix (patch by Joe Orton) --- diff --git a/sapi/apache2handler/sapi_apache2.c b/sapi/apache2handler/sapi_apache2.c index 6043e34f29..445daeae13 100644 --- a/sapi/apache2handler/sapi_apache2.c +++ b/sapi/apache2handler/sapi_apache2.c @@ -67,30 +67,15 @@ char *apache2_php_ini_path_override = NULL; static int php_apache_sapi_ub_write(const char *str, uint str_length TSRMLS_DC) { - apr_bucket *bucket; - apr_bucket_brigade *brigade; request_rec *r; php_struct *ctx; - char *copy_str; - - if (str_length == 0) { - return 0; - } ctx = SG(server_context); r = ctx->r; - brigade = ctx->brigade; - copy_str = apr_pmemdup( r->pool, str, str_length); - bucket = apr_bucket_pool_create(copy_str, str_length, r->pool, r->connection->bucket_alloc); - - APR_BRIGADE_INSERT_TAIL(brigade, bucket); - - if (ap_pass_brigade(r->output_filters, brigade) != APR_SUCCESS || r->connection->aborted) { + if (ap_rwrite(str, str_length, r) < 0) { php_handle_aborted_connection(); } - /* Ensure this brigade is empty for the next usage. */ - apr_brigade_cleanup(brigade); return str_length; /* we always consume all the data passed to us. */ } @@ -246,8 +231,6 @@ static void php_apache_sapi_flush(void *server_context) { php_struct *ctx; - apr_bucket_brigade *brigade; - apr_bucket *bucket; request_rec *r; TSRMLS_FETCH(); @@ -260,20 +243,15 @@ php_apache_sapi_flush(void *server_context) } r = ctx->r; - brigade = ctx->brigade; sapi_send_headers(TSRMLS_C); r->status = SG(sapi_headers).http_response_code; SG(headers_sent) = 1; - /* Send a flush bucket down the filter chain. */ - bucket = apr_bucket_flush_create(r->connection->bucket_alloc); - APR_BRIGADE_INSERT_TAIL(brigade, bucket); - if (ap_pass_brigade(r->output_filters, brigade) != APR_SUCCESS || r->connection->aborted) { + if (ap_rflush(r) < 0 || r->connection->aborted) { php_handle_aborted_connection(); } - apr_brigade_cleanup(brigade); } static void php_apache_sapi_log_message(char *msg)