From: borg323 <4010067-borg323@users.noreply.gitlab.com> Date: Fri, 5 Jul 2019 22:33:58 +0000 (+0300) Subject: curses: filter unicode chars > 0xffff X-Git-Url: https://scope-eye.net/git/?a=commitdiff_plain;h=39205b6c8c9188b3f07431bd27c8bdcbcc51a126;p=liskon_frotz.git curses: filter unicode chars > 0xffff --- diff --git a/src/curses/ux_input.c b/src/curses/ux_input.c index 774a0bd..9a23891 100644 --- a/src/curses/ux_input.c +++ b/src/curses/ux_input.c @@ -239,8 +239,10 @@ static int unix_read_char(int extkeys) /* ...and the other 2% makes up 98% of the code. :( */ #ifdef USE_UTF8 - if (sel != KEY_CODE_YES && c >= ZC_LATIN1_MIN) + if (sel != KEY_CODE_YES && c >= ZC_LATIN1_MIN) { + if (c > 0xffff) continue; return c; + } #endif /* On many terminals the backspace key returns DEL. */ @@ -926,11 +928,14 @@ char *os_read_file_name (const char *default_name, int flag) z = default_name[i++] & 0x1f; z = (z << 6) | (default_name[i++] & 0x3f); print_char(z); - } else { + } else if((default_name[i] & 0xf0) == 0xe0 ) { z = default_name[i++] & 0xf; z = (z << 6) | (default_name[i++] & 0x3f); z = (z << 6) | (default_name[i++] & 0x3f); print_char(z); + } else { + i+=4; + print_char('?'); } } }