Mercurial > emacs
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)