robinf          Sun Dec 28 19:50:58 2008 UTC

  Added files:                 
    /php-src/tests/output       bug46903.phpt bug46900.phpt 

  Modified files:              
    /php-src/tests/output       ob_start_basic_004.phpt 
                                ob_start_basic_002.phpt ob_015.phpt 
                                ob_014.phpt 
    /php-src/main       output.c 
  Log:
  Fix bugs #46900 and #46903.
  
http://cvs.php.net/viewvc.cgi/php-src/tests/output/ob_start_basic_004.phpt?r1=1.2&r2=1.3&diff_format=u
Index: php-src/tests/output/ob_start_basic_004.phpt
diff -u php-src/tests/output/ob_start_basic_004.phpt:1.2 
php-src/tests/output/ob_start_basic_004.phpt:1.3
--- php-src/tests/output/ob_start_basic_004.phpt:1.2    Thu Dec 18 15:20:10 2008
+++ php-src/tests/output/ob_start_basic_004.phpt        Sun Dec 28 19:50:58 2008
@@ -1,7 +1,5 @@
 --TEST--
 ob_start() chunk_size: confirm buffer is flushed after any output call that 
causes its length to equal or exceed chunk_size.
---XFAIL--
-Special behaviour when chunk_size set to 1 is not honoured on PHP6. See bug 
46903.
 --FILE--
 <?php
 /* 
http://cvs.php.net/viewvc.cgi/php-src/tests/output/ob_start_basic_002.phpt?r1=1.2&r2=1.3&diff_format=u
Index: php-src/tests/output/ob_start_basic_002.phpt
diff -u php-src/tests/output/ob_start_basic_002.phpt:1.2 
php-src/tests/output/ob_start_basic_002.phpt:1.3
--- php-src/tests/output/ob_start_basic_002.phpt:1.2    Thu Dec 18 15:20:10 2008
+++ php-src/tests/output/ob_start_basic_002.phpt        Sun Dec 28 19:50:58 2008
@@ -1,7 +1,5 @@
 --TEST--
 ob_start(): Check behaviour with various callback return values.
---XFAIL--
-PHP6 behaves differently from PHP5 when callback returns null. See bug 46900.
 --FILE--
 <?php
 function return_empty_string($string) {
http://cvs.php.net/viewvc.cgi/php-src/tests/output/ob_015.phpt?r1=1.2&r2=1.3&diff_format=u
Index: php-src/tests/output/ob_015.phpt
diff -u php-src/tests/output/ob_015.phpt:1.2 
php-src/tests/output/ob_015.phpt:1.3
--- php-src/tests/output/ob_015.phpt:1.2        Tue Aug 22 08:16:37 2006
+++ php-src/tests/output/ob_015.phpt    Sun Dec 28 19:50:58 2008
@@ -4,8 +4,19 @@
 <?php
 ob_start("str_rot13", 1);
 echo "foo\n";
+// str_rot13 expects 1 param and returns NULL when passed 2 params.
+// It is invoked with 2 params when used as an OB callback.
+// Therefore, there will be no data in the buffer. This is expected: see bug 
46900.
+ob_end_flush();
+
+// Show the error.
+print_r(error_get_last());
 ?>
 --EXPECTF--
-foo
-
-Warning: str_rot13() expects exactly 1 parameter, 2 given in %s on line %d
+Array
+(
+    [type] => 2
+    [message] => str_rot13() expects exactly 1 parameter, 2 given
+    [file] => %s
+    [line] => 7
+)
\ No newline at end of file
http://cvs.php.net/viewvc.cgi/php-src/tests/output/ob_014.phpt?r1=1.2&r2=1.3&diff_format=u
Index: php-src/tests/output/ob_014.phpt
diff -u php-src/tests/output/ob_014.phpt:1.2 
php-src/tests/output/ob_014.phpt:1.3
--- php-src/tests/output/ob_014.phpt:1.2        Tue Aug 22 08:16:37 2006
+++ php-src/tests/output/ob_014.phpt    Sun Dec 28 19:50:58 2008
@@ -2,13 +2,21 @@
 output buffering - failure
 --FILE--
 <?php
-/*
- * apparently the error handler cannot get the current function name on 
shutdown
- */
 ob_start("str_rot13");
 echo "foo\n";
+// str_rot13 expects 1 param and returns NULL when passed 2 params.
+// It is invoked with 2 params when used as an OB callback.
+// Therefore, there will be no data in the buffer. This is expected: see bug 
46900.
+ob_end_flush();
+
+// Show the error.
+print_r(error_get_last());
 ?>
 --EXPECTF--
-foo
-
-Warning: (null)() expects exactly 1 parameter, 2 given in %s on line %d
+Array
+(
+    [type] => 2
+    [message] => str_rot13() expects exactly 1 parameter, 2 given
+    [file] => %s
+    [line] => 7
+)
\ No newline at end of file
http://cvs.php.net/viewvc.cgi/php-src/main/output.c?r1=1.214&r2=1.215&diff_format=u
Index: php-src/main/output.c
diff -u php-src/main/output.c:1.214 php-src/main/output.c:1.215
--- php-src/main/output.c:1.214 Mon Aug 18 07:45:59 2008
+++ php-src/main/output.c       Sun Dec 28 19:50:58 2008
@@ -19,7 +19,7 @@
    +----------------------------------------------------------------------+
 */
 
-/* $Id: output.c,v 1.214 2008/08/18 07:45:59 tony2001 Exp $ */
+/* $Id: output.c,v 1.215 2008/12/28 19:50:58 robinf Exp $ */
 
 #ifndef PHP_OUTPUT_DEBUG
 #      define PHP_OUTPUT_DEBUG 0
@@ -983,7 +983,7 @@
                        ZVAL_LONG(ob_mode, (long) context->op);
                        zend_fcall_info_argn(&handler->func.user->fci 
TSRMLS_CC, 2, &ob_data, &ob_mode);
                        
-#define PHP_OUTPUT_USER_SUCCESS(retval) (retval && (Z_TYPE_P(retval) != 
IS_NULL) && (Z_TYPE_P(retval) != IS_BOOL || Z_BVAL_P(retval)))
+#define PHP_OUTPUT_USER_SUCCESS(retval) (retval && !(Z_TYPE_P(retval) == 
IS_BOOL && Z_BVAL_P(retval)==0))
                        if (SUCCESS == 
zend_fcall_info_call(&handler->func.user->fci, &handler->func.user->fcc, 
&retval, NULL TSRMLS_CC) && PHP_OUTPUT_USER_SUCCESS(retval)) {
                                /* user handler may have returned TRUE */
                                status = PHP_OUTPUT_HANDLER_NO_DATA;
@@ -1342,6 +1342,8 @@
        }
        if (chunk_size < 0) {
                chunk_size = 0;
+       } else if (chunk_size == 1) {
+               chunk_size = 4096;
        }
        
        if (SUCCESS != php_output_start_user(output_handler, chunk_size, flags 
TSRMLS_CC)) {

http://cvs.php.net/viewvc.cgi/php-src/tests/output/bug46903.phpt?view=markup&rev=1.1
Index: php-src/tests/output/bug46903.phpt
+++ php-src/tests/output/bug46903.phpt
--TEST--
Bug #46903 (ob_start(): Special $chunk_size value of 1 is not honoured in HEAD)
--FILE--
<?php
function flushCounter($input) {
        static $counter=0;
        return '[' . ++$counter . "] $input \n";
}

// This should set the buffer size to 4096
ob_start('flushCounter', 1);

// Get the buffer size: 
$bufferInfo = ob_get_status(true);
var_dump($bufferInfo[0]['chunk_size']);

// If the buffer size is >1, these two chars should
// come out as part of a single flush:
echo "1";
echo "2";
?>
--EXPECTF--
[1] int(4096)
12 
http://cvs.php.net/viewvc.cgi/php-src/tests/output/bug46900.phpt?view=markup&rev=1.1
Index: php-src/tests/output/bug46900.phpt
+++ php-src/tests/output/bug46900.phpt
--TEST--
Bug #46900 (Unexpected behaviour in HEAD when output buffer callback returns 
null)
--FILE--
<?php
function return_null($string) {
        return null;
}

ob_start('return_null');
echo "You shouldn't see this.\n";
ob_end_flush();

echo 'done';
?>
--EXPECTF--
done


-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to