]> granicus.if.org Git - php/commitdiff
Fixed bug #26862 (ob_flush() followed by output_reset_rewrite_vars() may
authorIlia Alshanetsky <iliaa@php.net>
Wed, 11 Feb 2004 17:00:48 +0000 (17:00 +0000)
committerIlia Alshanetsky <iliaa@php.net>
Wed, 11 Feb 2004 17:00:48 +0000 (17:00 +0000)
result in data loss).

ext/session/tests/bug26862.phpt [new file with mode: 0644]
ext/standard/url_scanner_ex.c
ext/standard/url_scanner_ex.re

diff --git a/ext/session/tests/bug26862.phpt b/ext/session/tests/bug26862.phpt
new file mode 100644 (file)
index 0000000..f30a21d
--- /dev/null
@@ -0,0 +1,21 @@
+--TEST--
+Bug #26862 (ob_flush() before output_reset_rewrite_vars() results in data loss)
+--SKIPIF--
+<?php include('skipif.inc'); ?>
+--INI--
+register_globals=0
+html_errors=0
+--FILE--
+<?php
+session_start();
+output_add_rewrite_var('var', 'value');
+
+echo '<a href="file.php">link</a>';
+
+ob_flush();
+
+output_reset_rewrite_vars();
+echo '<a href="file.php">link</a>';
+?>
+--EXPECT--
+<a href="file.php?var=value">link</a><a href="file.php">link</a>
index b7ed73983810d7990ad7e59f5d47d32db8caec6b..edfbb0eec830955d5b2dd9a3a95955aacd037fdf 100644 (file)
@@ -1,5 +1,5 @@
-/* Generated by re2c 0.5 on Thu Jan  8 20:25:46 2004 */
-#line 1 "/usr/src/web/php/php5/ext/standard/url_scanner_ex.re"
+/* Generated by re2c 0.5 on Wed Feb 11 11:58:10 2004 */
+#line 1 "/home/rei/php5/ext/standard/url_scanner_ex.re"
 /*
   +----------------------------------------------------------------------+
   | PHP Version 5                                                        |
@@ -918,7 +918,7 @@ static void php_url_scanner_output_handler(char *output, uint output_len, char *
        size_t len;
 
     if (BG(url_adapt_state_ex).url_app.len != 0) {
-        *handled_output = url_adapt_ext(output, output_len, &len, (zend_bool) (mode&PHP_OUTPUT_HANDLER_END ? 1 : 0) TSRMLS_CC);
+        *handled_output = url_adapt_ext(output, output_len, &len, (zend_bool) (mode & (PHP_OUTPUT_HANDLER_END|PHP_OUTPUT_HANDLER_CONT) ? 1 : 0) TSRMLS_CC);
                if (sizeof(uint) < sizeof(size_t)) {
                        if (len > UINT_MAX)
                                len = UINT_MAX;
index d6badb34a42183bb1db79b6a90480b716d4910e0..d60a35e6a4d3dc19dd97a10d62527f5f229270b0 100644 (file)
@@ -417,7 +417,7 @@ static void php_url_scanner_output_handler(char *output, uint output_len, char *
        size_t len;
 
     if (BG(url_adapt_state_ex).url_app.len != 0) {
-        *handled_output = url_adapt_ext(output, output_len, &len, (zend_bool) (mode&PHP_OUTPUT_HANDLER_END ? 1 : 0) TSRMLS_CC);
+        *handled_output = url_adapt_ext(output, output_len, &len, (zend_bool) (mode & (PHP_OUTPUT_HANDLER_END|PHP_OUTPUT_HANDLER_CONT) ? 1 : 0) TSRMLS_CC);
                if (sizeof(uint) < sizeof(size_t)) {
                        if (len > UINT_MAX)
                                len = UINT_MAX;