From 670d2b6e2bebdc84aaa4a525d164bf50f8f2eb4b Mon Sep 17 00:00:00 2001 From: Toshi MARUYAMA Date: Sun, 28 Jul 2013 11:00:02 +0000 Subject: fix diff of CJK(Chinese/Japanese/Korean) is broken on Ruby 1.8 (#14562) Contributed by Jun NAITOH. git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12046 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- lib/redmine/unified_diff.rb | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'lib/redmine/unified_diff.rb') diff --git a/lib/redmine/unified_diff.rb b/lib/redmine/unified_diff.rb index 548003220..170ae1db8 100644 --- a/lib/redmine/unified_diff.rb +++ b/lib/redmine/unified_diff.rb @@ -205,12 +205,20 @@ module Redmine end end ending = -1 - while ending >= -(max - starting) && line_left[ending] == line_right[ending] + while ending >= -(max - starting) && (line_left[ending] == line_right[ending]) ending -= 1 end if (! "".respond_to?(:force_encoding)) && ending > (-1 * line_left.size) - while line_left[ending].ord.between?(128, 191) && ending > -1 - ending -= 1 + while line_left[ending].ord.between?(128, 255) && ending < -1 + if line_left[ending].ord.between?(128, 191) + if line_left[ending + 1].ord.between?(128, 191) + ending += 1 + else + break + end + else + ending += 1 + end end end unless starting == 0 && ending == -1 -- cgit v1.2.3