changeset 50163:6f30f0db5f30

(w32_encode_char): Prevent double-byte chars from crashing Emacs.
author Jason Rumney <jasonr@gnu.org>
date Sun, 16 Mar 2003 22:11:04 +0000
parents 1404922b76b3
children 61b178f7f6dc
files src/w32term.c
diffstat 1 files changed, 9 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/src/w32term.c	Sun Mar 16 22:10:12 2003 +0000
+++ b/src/w32term.c	Sun Mar 16 22:11:04 2003 +0000
@@ -1134,13 +1134,11 @@
   int charset = CHAR_CHARSET (c);
   int codepage;
   int unicode_p = 0;
+  int internal_two_byte_p = 0;
 
   XFontStruct *font = font_info->font;
 
-  xassert (two_byte_p);
-
-  if (two_byte_p)
-    *two_byte_p = w32_font_is_double_byte (font);
+  internal_two_byte_p = w32_font_is_double_byte (font);
 
   /* FONT_INFO may define a scheme by which to encode byte1 and byte2.
      This may be either a program in a special encoder language or a
@@ -1167,7 +1165,7 @@
 
       /* We assume that MSBs are appropriately set/reset by CCL
 	 program.  */
-      if (!*two_byte_p)	/* 1-byte font */
+      if (!internal_two_byte_p)	/* 1-byte font */
 	STORE_XCHAR2B (char2b, 0, ccl->reg[1]);
       else
 	STORE_XCHAR2B (char2b, ccl->reg[1], ccl->reg[2]);
@@ -1214,8 +1212,12 @@
             MultiByteToWideChar (codepage, 0, temp+1, 1, char2b, 1);
         }
       unicode_p = 1;
-      *two_byte_p = 1;
-    }
+      internal_two_byte_p = 1;
+    }
+
+  if (two_byte_p)
+    *two_byte_p = internal_two_byte_p;
+
   if (!font)
     return UNKNOWN_FONT;
   else if (font->bdf && CHARSET_DIMENSION (charset) == 1)