From: Moriyoshi Koizumi Date: Mon, 19 Jul 2004 08:35:48 +0000 (+0000) Subject: - MFH (iconv.c: 1.118): Fix a bug in iconv stream filter that prevents X-Git-Tag: php-5.0.1RC1~112 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=04c32887f19524dec59cc41e3ee066f845c2628d;p=php - MFH (iconv.c: 1.118): Fix a bug in iconv stream filter that prevents pending buckets from being processed. --- 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: