diff options
author | Sara Golemon <pollita@php.net> | 2007-08-04 07:53:00 +0000 |
---|---|---|
committer | Sara Golemon <pollita@php.net> | 2007-08-04 07:53:00 +0000 |
commit | 6f25b84a3abb84b9f598ececce61768cd76d7c60 (patch) | |
tree | e57cbaec70071a7946e9c6728aa8eab4948ab7b6 /ext | |
parent | 515aaeda108b11efbf8fb3c0c9d8d94ed0022d2c (diff) | |
download | php-git-6f25b84a3abb84b9f598ececce61768cd76d7c60.tar.gz |
MFH(r-1.49)Bugfix#36492 Userfilters can leak buckets
Diffstat (limited to 'ext')
-rw-r--r-- | ext/standard/user_filters.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/ext/standard/user_filters.c b/ext/standard/user_filters.c index 321ef58532..2423f6b5e1 100644 --- a/ext/standard/user_filters.c +++ b/ext/standard/user_filters.c @@ -232,8 +232,21 @@ php_stream_filter_status_t userfilter_filter( *bytes_consumed = Z_LVAL_P(zconsumed); } - if (retval) + if (retval) { zval_ptr_dtor(&retval); + } + + if (buckets_in->head) { + php_stream_bucket *bucket = buckets_in->head; + + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unprocessed filter buckets remaining on input brigade"); + while ((bucket = buckets_in->head)) { + /* Remove unconsumed buckets from the brigade */ + php_stream_bucket_unlink(bucket TSRMLS_CC); + php_stream_bucket_delref(bucket TSRMLS_CC); + } + } + zval_ptr_dtor(&zclosing); zval_ptr_dtor(&zconsumed); zval_ptr_dtor(&zout); |