Re: Fix UTF Encoding issue
- From
- Ismail Dönmez <ismail@pardus.org.tr>
- Date
- Dec 3, 2007, 11:32 UTC
- Message-ID
- <200712031332.36187.ismail@pardus.org.tr>
- In-Reply-To
- <7v7ijwjd9o.fsf@gitster.siamese.dyndns.org>
Monday 03 December 2007 Tarihinde 12:14:43 yazmıştı:
Show 36 quoted lines
> Benjamin Close <Benjamin.Close@clearchain.com> writes:
> >>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;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.