Re: Fix UTF Encoding issue
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Dec 3, 2007, 10:14 UTC
- Message-ID
- <7v7ijwjd9o.fsf@gitster.siamese.dyndns.org>
- In-Reply-To
- <4753D419.80503@clearchain.com>
Benjamin Close <Benjamin.Close@clearchain.com> writes:
Show 22 quoted lines
>>From 83042abf3967b455953cddeab43e33c1d59c6f03 Mon Sep 17 00:00:00 2001
> From: Benjamin Close <Benjamin.Close@clearchain.com>
> Date: Sun, 2 Dec 2007 15:09:00 -0800
> Subject: [PATCH] Gitweb: Fix encoding to always translate rather than
> sometimes fail
>
> When performing the utf translation don't test if $res is defined.
> It appears that it is defined even when the conversion fails. This causes
> failures on the writing of the output stream which is expecting UTF.
> @@ -696,12 +696,8 @@ sub validate_refname {
> sub to_utf8 {
> my $str = shift;
> my $res;
> - 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);
> }This is funny.
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;(alternatively, you can assign return value of eval {} to $res).