]> granicus.if.org Git - php/commitdiff
fix user filter bug
authorJoe Watkins <krakjoe@php.net>
Fri, 30 Sep 2016 06:21:01 +0000 (07:21 +0100)
committerJoe Watkins <krakjoe@php.net>
Fri, 30 Sep 2016 06:21:01 +0000 (07:21 +0100)
ext/standard/tests/streams/user_streams_consumed_bug.phpt [new file with mode: 0644]
ext/standard/user_filters.c

diff --git a/ext/standard/tests/streams/user_streams_consumed_bug.phpt b/ext/standard/tests/streams/user_streams_consumed_bug.phpt
new file mode 100644 (file)
index 0000000..147a7bd
--- /dev/null
@@ -0,0 +1,32 @@
+--TEST--
+Testing user filter on streams
+--FILE--
+<?php
+class Intercept extends php_user_filter
+{
+    public static $cache = '';
+    public function filter($in, $out, &$consumed, $closing)
+    {
+        while ($bucket = stream_bucket_make_writeable($in)) {
+            self::$cache .= $bucket->data;
+            $consumed += $bucket->datalen;
+            stream_bucket_append($out, $bucket);
+        }
+        return PSFS_PASS_ON;
+    }
+}
+
+$out = fwrite(STDOUT, "Hello\n");
+var_dump($out);
+
+stream_filter_register("intercept_filter", "Intercept");
+stream_filter_append(STDOUT, "intercept_filter");
+
+$out = fwrite(STDOUT, "Goodbye\n");
+var_dump($out);
+--EXPECTF--
+Hello
+int(6)
+Goodbye
+int(8)
+
index 4434fd1f0d2f74ccd4794dab7c7c2d207b5becf8..e65148a2df9b983e2c8a0037f76ced3f94329724 100644 (file)
@@ -217,7 +217,7 @@ php_stream_filter_status_t userfilter_filter(
        }
 
        if (bytes_consumed) {
-               *bytes_consumed = Z_LVAL_P(&args[2]);
+               *bytes_consumed = zval_get_long(&args[2]);
        }
 
        if (buckets_in->head) {