From 967c72865f6831a9b4c5c7b4058f7c298898d4f6 Mon Sep 17 00:00:00 2001 From: Moriyoshi Koizumi Date: Mon, 19 Jul 2004 08:34:18 +0000 Subject: [PATCH] - Fix a bug in iconv stream filter that prevents pending buckets from being processed on flush operation (same issue pollita fixed several days ago). --- ext/iconv/iconv.c | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/ext/iconv/iconv.c b/ext/iconv/iconv.c index 4f0905cf59..b8174e1701 100644 --- a/ext/iconv/iconv.c +++ b/ext/iconv/iconv.c @@ -2531,27 +2531,27 @@ static php_stream_filter_status_t php_iconv_stream_filter_do_filter( size_t consumed = 0; php_iconv_stream_filter *self = (php_iconv_stream_filter *)filter->abstract; - if (flags != PSFS_FLAG_NORMAL) { - if (php_iconv_stream_filter_append_bucket(self, stream, filter, buckets_out, NULL, 0, &consumed, self->persistent TSRMLS_CC) != SUCCESS) { - goto out_failure; - } - } else { - while (buckets_in->head != NULL) { - bucket = buckets_in->head; + while (buckets_in->head != NULL) { + bucket = buckets_in->head; - php_stream_bucket_unlink(bucket TSRMLS_CC); + php_stream_bucket_unlink(bucket TSRMLS_CC); - if (php_iconv_stream_filter_append_bucket(self, stream, filter, buckets_out, bucket->buf, bucket->buflen, &consumed, self->persistent TSRMLS_CC) != SUCCESS) { goto out_failure; - } + if (php_iconv_stream_filter_append_bucket(self, stream, filter, buckets_out, bucket->buf, bucket->buflen, &consumed, self->persistent TSRMLS_CC) != SUCCESS) { goto out_failure; + } - php_stream_bucket_delref(bucket TSRMLS_CC); + php_stream_bucket_delref(bucket TSRMLS_CC); + } + + if (flags != PSFS_FLAG_NORMAL) { + if (php_iconv_stream_filter_append_bucket(self, stream, filter, buckets_out, NULL, 0, &consumed, self->persistent TSRMLS_CC) != SUCCESS) { + goto out_failure; } } - if (bytes_consumed) { + if (bytes_consumed != NULL) { *bytes_consumed = consumed; } - + return PSFS_PASS_ON; out_failure: -- 2.40.0