ID: 35849 Updated by: [EMAIL PROTECTED] Reported By: sqchen at citiz dot net -Status: Feedback +Status: Open Bug Type: Unknown/Other Function Operating System: redhat 7.3 PHP Version: 5.1.1 New Comment:
I can see two bugs in this report: * mmap()'ed fds aren't seeked() to update the position * the length is a size_t, where it should be a ssize_t, because PHP_STREAM_COPY_ALL is defined to -1 my patch: http://mega.ist.utl.pt/~ncpl/php_stream_mmap.txt it makes all negative values to read all the file (to be consistent with non-mmap'ed fds). I can also see some long/size_t/ssize_t mixes, which can be problematic in some platforms. Previous Comments: ------------------------------------------------------------------------ [2005-12-30 10:25:03] [EMAIL PROTECTED] Not enough information was provided for us to be able to handle this bug. Please re-read the instructions at http://bugs.php.net/how-to-report.php If you can provide more information, feel free to add it to this bug and change the status back to "Open". Thank you for your interest in PHP. ------------------------------------------------------------------------ [2005-12-30 08:25:20] sqchen at citiz dot net SORRY, I have make a mistake on the code above, Below is the right code Description: ------------ stream_copy_to_stream() do strange behavior when the maxlength parameter is negative, see the following codes: Reproduce code: --------------- <?php $src = fopen("1.txt", "r"); //"hell, world" in "1.txt" $dest1 = fopen("des1.txt", "w"); $dest2 = fopen("des2.txt", "w"); /*----seg1------*/ stream_copy_to_stream($src, $des1, -2); readfile("des1.txt"); //hello, world stream_copy_to_stream($src, $des2); readfile("des2.txt"); //nothing? why? /* please compare it with seg2*/ /*----seg2-------*/ stream_copy_to_stream($src, $des1, 2); readfile("des1.txt"); //he stream_copy_to_stream($src, $des2); readfile("des2.txt"); //hello, world ?> ------------------------------------------------------------------------ [2005-12-30 07:43:17] sqchen at citiz dot net Description: ------------ stream_copy_to_stream() do strange behavior when the maxlength parameter is negative, see the following codes: Reproduce code: --------------- <?php $src = fopen("1.txt", "r"); //"hell, world" in "1.txt" $dest1 = fopen("des1.txt", "w"); $dest2 = fopen("des2.txt", "w"); /*----seg1------*/ stream_copy_to_stream($src, $des1, -2); readfile("des1.txt"); //hello, world stream_copy_to_stream($src, $des1); readfile("des2.txt"); //nothing? why? /* please compare it with seg2*/ /*----seg2-------*/ stream_copy_to_stream($src, $des1, 2); readfile("des1.txt"); //he stream_copy_to_stream($src, $des1); readfile("des2.txt"); //hello, world ?> ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=35849&edit=1