Re: Fix UTF Encoding issue
- From
Jakub Narebski <jnareb@gmail.com>
- Date
- Dec 3, 2007, 12:06 UTC
- Message-ID
- <m3prxougmx.fsf@roke.D-201>
- In-Reply-To
- <200712031332.36187.ismail@pardus.org.tr>
Ismail Dönmez <ismail@pardus.org.tr> writes:
> Monday 03 December 2007 Tarihinde 12:14:43 yazmıştı: >> Benjamin Close <Benjamin.Close@clearchain.com> writes:
Show 22 quoted lines
>>> - eval { $res = decode_utf8($str, Encode::FB_CROAK); };
>>> - if (defined $res) {
>>> - return $res;
>>> - } else {
>>> - return decode($fallback_encoding, $str, Encode::FB_DEFAULT);
>>> - }
>>> + eval { return ($res = decode_utf8($str, Encode::FB_CROAK)); };
>>> + return decode($fallback_encoding, $str, Encode::FB_DEFAULT);
>>> }
>>
>> I thought the standard catch ... throw idiom in Perl was to do the above
>> like this:
>>
>> my $res;
>> eval { $res = decode_utf8($str, Encode::FB_CROAK); };
>> if ($@) {
>> return decode($fallback_encoding, $str, Encode::FB_DEFAULT);
>> }
>> return $res;
>
> I think this is correct, but the current code in gitweb doesn't look correct
> since it checks for $res and not $@.First version of the patch was created by Martin Koegler. I have participated in creating the version which is now in gitweb, but I have to say that I wrote it based on decode_utf8 documentation... which doesn't necessarily agree with facts :-(
I'm all for the "throw idion" version. Ack.
-- Jakub Narebski