On 04/25/2012 05:15 AM, Leon Timmermans wrote: > 2012/4/25 Steve Hay<perlbug-followup@perl.org>: >> Running the program below with the attached utf8.txt input file produces >> the following crash: >> panic: sv_setpvn called with negative strlen -1 at utf8.pl line 4,<$rh> >> line 28. >> Close with partial character at utf8.pl line 4,<$rh> line 28. >> >> open my $rh, '<:encoding(UTF-8)', 'utf8.txt' or die $!; >> open my $wh, '>:encoding(ISO-8859-1)', 'iso88591.txt' or die $!; >> #select((select($wh), $| = 1)[0]); >> print $wh $_ while<$rh>; >> close $wh; >> close $rh; >> >> Obviously the (Greek) characters in the input file cannot be converted >> to ISO-8859-1, but perl shouldn't crash. > > This crash only seems to happen when combining :crlf with :encoding. I > suspect we need a smaller test-case to make it obvious what's really > happening. > >> Uncommenting the select() call strangely makes the crash go away. So >> does deleting any single line from the input file. > > Another thing that makes it go away: removing the byte order mark in > your file. This is smelling fishy. > > Leon > I could not get this to reproduce on my machine with blead. Instead, I get messages like: \x{feff}" does not map to iso-8859-1 at test.pl line 4, <$rh> line 28. "\x{039f}" does not map to iso-8859-1 at test.pl line 4, <$rh> line 28. "\x{03af}" does not map to iso-8859-1 at test.pl line 4, <$rh> line 28. "\x{03a3}" does not map to iso-8859-1 at test.pl line 4, <$rh> line 28. "\x{03c5}" does not map to iso-8859-1 at test.pl line 4, <$rh> line 28. "\x{03bd}" does not map to iso-8859-1 at test.pl line 4, <$rh> line 28. ... "\x{03cd}" does not map to iso-8859-1 at test.pl line 5, <$rh> line 28. "\x{03b6}" does not map to iso-8859-1 at test.pl line 5, <$rh> line 28. "\x{03b5}" does not map to iso-8859-1 at test.pl line 5, <$rh> line 28. "\x{03b9}" does not map to iso-8859-1 at test.pl line 5, <$rh> line 28.Thread Previous | Thread Next