Monday 03 December 2007 Tarihinde 12:14:43 yazmıştı: > Benjamin Close <Benjamin.Close@xxxxxxxxxxxxxx> writes: > >>From 83042abf3967b455953cddeab43e33c1d59c6f03 Mon Sep 17 00:00:00 2001 > > > > From: Benjamin Close <Benjamin.Close@xxxxxxxxxxxxxx> > > 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; I think this is correct, but the current code in gitweb doesn't look correct since it checks for $res and not $@. Regards, ismail -- Never learn by your mistakes, if you do you may never dare to try again. - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html