diff options
author | Douwe Maan <douwe@gitlab.com> | 2019-03-21 16:43:54 +0000 |
---|---|---|
committer | Douwe Maan <douwe@gitlab.com> | 2019-03-21 16:43:54 +0000 |
commit | 7d3c5d882c1ddb7a78241e326996f30d67fce4b8 (patch) | |
tree | 42dc69e644450a39fa700e3840a963bac438eec4 /lib | |
parent | 1bc4ee3f9a06a8d8fc70b97db90ca5e8e3434604 (diff) | |
parent | 8723f292552814cfe4566f213005e4e190fca456 (diff) | |
download | gitlab-ce-7d3c5d882c1ddb7a78241e326996f30d67fce4b8.tar.gz |
Merge branch '59147-duplicate-match-line' into 'master'
Fix duplicated bottom match line
Closes #59147
See merge request gitlab-org/gitlab-ce!26402
Diffstat (limited to 'lib')
-rw-r--r-- | lib/gitlab/diff/file.rb | 25 |
1 files changed, 15 insertions, 10 deletions
diff --git a/lib/gitlab/diff/file.rb b/lib/gitlab/diff/file.rb index dbee47a19ee..dce80bf21de 100644 --- a/lib/gitlab/diff/file.rb +++ b/lib/gitlab/diff/file.rb @@ -158,7 +158,10 @@ module Gitlab new_blob || old_blob end - attr_writer :highlighted_diff_lines + def highlighted_diff_lines=(value) + clear_memoization(:diff_lines_for_serializer) + @highlighted_diff_lines = value + end # Array of Gitlab::Diff::Line objects def diff_lines @@ -314,19 +317,21 @@ module Gitlab # This adds the bottom match line to the array if needed. It contains # the data to load more context lines. def diff_lines_for_serializer - lines = highlighted_diff_lines + strong_memoize(:diff_lines_for_serializer) do + lines = highlighted_diff_lines - return if lines.empty? - return if blob.nil? + next if lines.empty? + next if blob.nil? - last_line = lines.last + last_line = lines.last - if last_line.new_pos < total_blob_lines(blob) && !deleted_file? - match_line = Gitlab::Diff::Line.new("", 'match', nil, last_line.old_pos, last_line.new_pos) - lines.push(match_line) - end + if last_line.new_pos < total_blob_lines(blob) && !deleted_file? + match_line = Gitlab::Diff::Line.new("", 'match', nil, last_line.old_pos, last_line.new_pos) + lines.push(match_line) + end - lines + lines + end end def fully_expanded? |