summaryrefslogtreecommitdiffstats
path: root/debian/patches/52fix_screen_utf8_nfd.patch
blob: 504dfc42dcfec14e5b0760ae06aa1363e34f24b8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
Author: Kenta Murata (mrkn) <mrkn@ruby-lang.org>
Reviewed-By: Nobuhiro Iwamatsu <iwamatsu@debian.org>
Description: screen outputs screen "ÿ" after a connected character.
 This is a character without the need. 
 This happens in UTF-8 environment. 
 Before : screen$ ruby1.9.1 -e 'puts "\u304b\u3099.."'
          がÿ...
 patch applied :  screen $ ruby1.9.1 -e 'puts "\u304b\u3099.."'
          が..
Origin: https://d.hatena.ne.jp/mrkn/20101014/fix_screen_utf8_nfd_bug
Bugs-Debian: https://bugs.debian.org/600246
Bugs-Debian: https://bugs.debian.org/677512

Index: screen/ansi.c
===================================================================
--- screen.orig/ansi.c	2012-03-20 22:15:02.000000000 +0100
+++ screen/ansi.c	2012-03-20 22:41:45.000000000 +0100
@@ -725,6 +725,10 @@
 		      LPutChar(&curr->w_layer, &omc, ox, oy);
 		      LGotoPos(&curr->w_layer, curr->w_x, curr->w_y);
 		    }
+	          if (curr->w_mbcs)
+		    {
+		      curr->w_rend.mbcs = curr->w_mbcs = 0;
+		    }
 		  break;
 		}
 	      font = curr->w_rend.font;
Index: screen/display.c
===================================================================
--- screen.orig/display.c	2012-03-20 22:41:28.000000000 +0100
+++ screen/display.c	2012-03-20 22:41:45.000000000 +0100
@@ -603,7 +603,7 @@
 	    D_x += D_AM ? 1 : -1;
 	  D_mbcs = 0;
 	}
-      else if (utf8_isdouble(c))
+      else if (utf8_isdouble(c) || (c >= 0xd800 && c < 0xe000))
 	{
 	  D_mbcs = c;
 	  D_x++;