# HG changeset patch # User Jason Rumney # Date 1047852664 0 # Node ID 6f30f0db5f30632d134815212133f55402d45fc0 # Parent 1404922b76b372cf6ff5edbf8eae138ba689de7d (w32_encode_char): Prevent double-byte chars from crashing Emacs. diff -r 1404922b76b3 -r 6f30f0db5f30 src/w32term.c --- 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)