]> granicus.if.org Git - php/commitdiff
- MFH (iconv.c: 1.118): Fix a bug in iconv stream filter that prevents
authorMoriyoshi Koizumi <moriyoshi@php.net>
Mon, 19 Jul 2004 08:35:48 +0000 (08:35 +0000)
committerMoriyoshi Koizumi <moriyoshi@php.net>
Mon, 19 Jul 2004 08:35:48 +0000 (08:35 +0000)
  pending buckets from being processed.

ext/iconv/iconv.c

index 4f0905cf597046a8ccdcbbaaef6e7f51cac0c4fe..b8174e1701789dbcbdb4afa7b2d4d589ac43508f 100644 (file)
@@ -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: