develooper Front page | perl.perl5.porters | Postings from April 2012

Re: [perl #112608] panic: sv_setpvn called with negative strlen -1

Thread Previous | Thread Next
From:
Leon Timmermans
Date:
April 25, 2012 04:15
Subject:
Re: [perl #112608] panic: sv_setpvn called with negative strlen -1
Message ID:
CAHhgV8iKy4Emnh9ix7uk6TPtmfnvBaZNuMbfRP_-99677pyRsw@mail.gmail.com
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

Thread Previous | Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About