summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDouwe Maan <douwe@gitlab.com>2015-05-20 16:16:48 +0000
committerDouwe Maan <douwe@gitlab.com>2015-05-20 16:16:48 +0000
commit9fe8c74d045b60b3190c571fffe049fa87032dbc (patch)
tree5e2372c6b39f2ddc57d2aed02685430112f53a10
parent76a758234ac29ba2c859cb50fec6e6374e4a8742 (diff)
parentdfce7b62f7e126a0891f81abc0bda20cfb7a58b5 (diff)
downloadgitlab-ce-9fe8c74d045b60b3190c571fffe049fa87032dbc.tar.gz
Merge branch 'lexer_error_workaround' into 'master'
workaround for buggy lexers It seems that some lexers can be buggy when used together with git blame. This results in a 500 error when a user tries to open the blame page in some cases. The workaround is pretty simple. Not only fall back to plaintext when the file content can't be guessed, but also when the lexer fails. This closes #1521 and #1646 /cc @DouweM @JobV It would be awesome to have this in a patch release for 7.11 or even in the release. But that's probably to late. See merge request !683
-rw-r--r--CHANGELOG1
-rw-r--r--app/helpers/blob_helper.rb6
2 files changed, 5 insertions, 2 deletions
diff --git a/CHANGELOG b/CHANGELOG
index fdb37bcc3ab..3c8b839c217 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -4,6 +4,7 @@ v 7.12.0 (unreleased)
- Allow to configure location of the `.gitlab_shell_secret` file. (Jakub Jirutka)
v 7.11.0 (unreleased)
+ - Fall back to Plaintext when Syntaxhighlighting doesn't work. Fixes some buggy lexers (Hannes Rosenögger)
- Fix broken view when viewing history of a file that includes a path that used to be another file (Stan Hu)
- Don't show duplicate deploy keys
- Fix commit time being displayed in the wrong timezone in some cases (Hannes Rosenögger)
diff --git a/app/helpers/blob_helper.rb b/app/helpers/blob_helper.rb
index 885ac5f85b8..9fe5f82f02f 100644
--- a/app/helpers/blob_helper.rb
+++ b/app/helpers/blob_helper.rb
@@ -9,11 +9,13 @@ module BlobHelper
begin
lexer = Rugments::Lexer.guess(filename: blob_name, source: blob_content)
- rescue Rugments::Lexer::AmbiguousGuess
+ result = formatter.format(lexer.lex(blob_content)).html_safe
+ rescue
lexer = Rugments::Lexers::PlainText
+ result = formatter.format(lexer.lex(blob_content)).html_safe
end
- formatter.format(lexer.lex(blob_content)).html_safe
+ result
end
def no_highlight_files