]> granicus.if.org Git - php/commitdiff
Fixed bug #44394 (Last two bytes missing from output)
authorFelipe Pena <felipe@php.net>
Wed, 12 Mar 2008 02:40:57 +0000 (02:40 +0000)
committerFelipe Pena <felipe@php.net>
Wed, 12 Mar 2008 02:40:57 +0000 (02:40 +0000)
NEWS
ext/standard/tests/general_functions/bug44394.phpt [new file with mode: 0644]
ext/standard/tests/general_functions/bug44394_2.phpt [new file with mode: 0644]
ext/standard/url_scanner_ex.c

diff --git a/NEWS b/NEWS
index fd7c0531de7a64c1a838a01bbc19dc191b6c321b..579e4259e7c0bb745305a78ff9c3da1e4fe06f41 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -126,6 +126,7 @@ PHP                                                                        NEWS
 - Fixed possible crash in ext/soap because of uninitialized value. (Zdash Urf)
 - Fixed PECL bug #12431 (OCI8 ping functionality is broken). (Oracle Corp.)
 
+- Fixed bug #44394 (Last two bytes missing from output). (Felipe)
 - Fixed bug #44336 (Improve pcre UTF-8 string matching performance).
   (frode at coretrek dot com, Nuno)
 - Fixed bug #44214 (Crash using preg_replace_callback() and global variable).
diff --git a/ext/standard/tests/general_functions/bug44394.phpt b/ext/standard/tests/general_functions/bug44394.phpt
new file mode 100644 (file)
index 0000000..3a61928
--- /dev/null
@@ -0,0 +1,18 @@
+--TEST--
+Bug #44394     Last two bytes missing from output
+--FILE--
+<?php
+
+$string = "<a href='a?q=1'>asd</a>";
+
+output_add_rewrite_var('a', 'b');
+
+echo $string;
+
+ob_flush();
+
+ob_end_clean();
+
+?>
+--EXPECT--
+<a href='a?q=1&a=b'>asd</a>
diff --git a/ext/standard/tests/general_functions/bug44394_2.phpt b/ext/standard/tests/general_functions/bug44394_2.phpt
new file mode 100644 (file)
index 0000000..561c631
--- /dev/null
@@ -0,0 +1,24 @@
+--TEST--
+Bug #44394 (Last two bytes missing from output) with session.use_trans_id
+--FILE--
+<?php
+
+ini_set('session.use_trans_sid', 1);
+
+session_start();
+
+ob_start();
+
+$string = "<a href='a?q=1'>asd</a>";
+
+output_add_rewrite_var('a', 'b');
+
+echo $string;
+
+ob_flush();
+
+ob_end_clean();
+
+?>
+--EXPECTF--
+<a href='a?q=1&PHPSESSID=%s&a=b'>asd</a>
index 4244d9f5af96a96a74090638781c839129449c0d..c7911ed7a9f0ff07ab4432d55346fd58d105bdd6 100644 (file)
@@ -1007,7 +1007,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;