Merge branch 'sk/gitweb-highlight-encoding'
authorJunio C Hamano <gitster@pobox.com>
Tue, 10 May 2016 20:40:33 +0000 (13:40 -0700)
committerJunio C Hamano <gitster@pobox.com>
Tue, 10 May 2016 20:40:33 +0000 (13:40 -0700)
Some multi-byte encoding can have a backslash byte as a later part
of one letter, which would confuse "highlight" filter used in
gitweb.

* sk/gitweb-highlight-encoding:
gitweb: apply fallback encoding before highlight

1  2 
gitweb/gitweb.perl
diff --combined gitweb/gitweb.perl
index 05d7910b7cdbd6fea7c835491caa774a46e4b7f8,17ff394923bc0fcb6fe547ac42e7523f96b3dde1..2fddf750fabf9ac2d079777ad7bd7953c2477f9c
@@@ -3935,6 -3935,9 +3935,9 @@@ sub run_highlighter 
  
        close $fd;
        open $fd, quote_command(git_cmd(), "cat-file", "blob", $hash)." | ".
+                 quote_command($^X, '-CO', '-MEncode=decode,FB_DEFAULT', '-pse',
+                   '$_ = decode($fe, $_, FB_DEFAULT) if !utf8::decode($_);',
+                   '--', "-fe=$fallback_encoding")." | ".
                  quote_command($highlight_bin).
                  " --replace-tabs=8 --fragment --syntax $syntax |"
                or die_error(500, "Couldn't open file or run syntax highlighter");
@@@ -7576,7 -7579,7 +7579,7 @@@ sub git_object 
                        git_cmd(), 'cat-file', '-t', $object_id) . ' 2> /dev/null'
                        or die_error(404, "Object does not exist");
                $type = <$fd>;
 -              chomp $type;
 +              defined $type && chomp $type;
                close $fd
                        or die_error(404, "Object does not exist");