emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] Changes to emacs/src/charset.c


From: Kenichi Handa
Subject: [Emacs-diffs] Changes to emacs/src/charset.c
Date: Tue, 27 Dec 2005 05:47:21 +0000

Index: emacs/src/charset.c
diff -u emacs/src/charset.c:1.146 emacs/src/charset.c:1.147
--- emacs/src/charset.c:1.146   Mon Dec 19 06:59:10 2005
+++ emacs/src/charset.c Tue Dec 27 05:47:21 2005
@@ -1344,6 +1344,10 @@
 {
   int len = SCHARS (string);
   int len_byte = SBYTES (string);
+  /* This set multibyte to 0 even if STRING is multibyte when it
+     contains only ascii and eight-bit-graphic, but that's
+     intentional.  */
+  int multibyte = len < len_byte;
   const unsigned char *str = SDATA (string);
   int i = 0, i_byte = 0;
   int width = 0;
@@ -1366,8 +1370,12 @@
        }
       else if (dp)
        {
-         int c = STRING_CHAR_AND_LENGTH (str + i_byte, len - i_byte, bytes);
+         int c;
 
+         if (multibyte)
+           c = STRING_CHAR_AND_LENGTH (str + i_byte, len - i_byte, bytes);
+         else
+           c = str[i_byte], bytes = 1;
          chars = 1;
          val = DISP_CHAR_VECTOR (dp, c);
          if (VECTORP (val))
@@ -1378,7 +1386,10 @@
       else
        {
          chars = 1;
-         PARSE_MULTIBYTE_SEQ (str + i_byte, len_byte - i_byte, bytes);
+         if (multibyte)
+           PARSE_MULTIBYTE_SEQ (str + i_byte, len_byte - i_byte, bytes);
+         else
+           bytes = 1;
          thiswidth = ONE_BYTE_CHAR_WIDTH (str[i_byte]);
        }
 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]