Bug #15799 Updated: Another segfault on iconv
| From: | sniper@php.net | Date: | Wed, 10 Apr 2002 23:39:04 +0000 |
| Subject: | Bug #15799 Updated: Another segfault on iconv | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-4611@lists.php.net to get a copy of this message | ||
ID: 15799
Updated by: sniper@php.net
Reported By: jan@horde.org
Status: Analyzed
Bug Type: ICONV related
Operating System: Linux
PHP Version: 4.0CVS-2002-02-2
New Comment:
fyi..I can't reproduce this on Linux with latest CVS
and with libiconv 1.3.
Previous Comments:
------------------------------------------------------------------------
[2002-03-12 01:19:33] mfischer@php.net
Yes true ... weird. Upon taking a closer look it seems the iconv fails
with 'Invalid or incomplete multibyte or wide character' but the error
code is not properly handled in the code in the first and therefore not
recognized. Will take a closer look later (this day ;).
Maybe you can verify if your input data really without errors?
------------------------------------------------------------------------
[2002-03-11 17:40:44] jan@horde.org
Ah, you're right, I thought all ob_* functions that return or output
the buffer pass the data through the ob_handler first.
But even if I use it the intended way, the output is not converted.
This is the new script I used:
<?
error_reporting(E_ALL);
$text = <<< END
Thanks !!
David Chang
-----------------------------------------------------------------
< ¨C¤ѳ£ Yahoo!©_¼¯ > www.yahoo.com.tw
END;
iconv_set_encoding('input_encoding', 'BIG5');
iconv_set_encoding('internal_encoding', 'UTF-8');
iconv_set_encoding('output_encoding', 'UTF-8');
ob_start('ob_iconv_handler');
echo $text;
header('Content-Type: text/plain; charset=UTF-8');
ob_end_flush();
?>
------------------------------------------------------------------------
[2002-03-11 17:10:02] mfischer@php.net
I'm closing this because I think your code is bogus. The manual clearly
says "The function ("ob_iconv_handler") will be called when
ob_end_flush() is called, or when the output buffer is flushed to the
browser at the end of the request."
So, if you call ob_get_contents() and ob_end_clean() you do not get any
conversion. If you either call ob_end_flush() or just don't call any
further ob*() functions the conversion works as expected for me.
Feel free to re-open if you think I'm wrong.
------------------------------------------------------------------------
[2002-03-11 05:58:19] mfischer@php.net
Yep, saw it. Will fix this later (this day).
------------------------------------------------------------------------
[2002-03-11 05:18:13] jan@horde.org
I see you already committed the patch to cvs and, yes, php doesn't
segfault anymore, thanks.
But unfortunately the conversion doesn't happen at all. You can try the
same script I posted earlier to reproduce it. Method 1 converts
correctly, method 2 just send the Big5 data asis.
------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
http://bugs.php.net/15799
--
Edit this bug report at http://bugs.php.net/?id=15799&edit=1