From: David Lawrence Ramsey Date: Sun, 28 Aug 2005 03:07:13 +0000 (+0000) Subject: make is_valid_unicode() catch more invalid Unicode X-Git-Tag: v1.3.9~43 X-Git-Url: https://git.wh0rd.org/?a=commitdiff_plain;h=79d9795c80d069a6502aefcca335533ed75b581d;p=nano.git make is_valid_unicode() catch more invalid Unicode git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3003 35c25a1d-7b9e-4130-9fde-d3aeb78583b8 --- diff --git a/ChangeLog b/ChangeLog index 72a3755a..e824181e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -134,10 +134,10 @@ CVS code - get_key_buffer(), check_statusblank(), nanogetstr(), titlebar(), statusbar(), bottombars(), edit_refresh(), do_yesno(), and do_help(). (DLR) - - Treat the Unicode characters D800-DFFF and FFFE-FFFF as - invalid, since the C library's multibyte functions don't seem - to. New function is_valid_unicode(); changes to mbrep() and - make_mbchar(). (DLR) + - Treat the Unicode characters D800-DFFF, FDD0-FDEF, and + xxFFFE-xxFFFF, as invalid, since the C library's multibyte + functions don't seem to. New function is_valid_unicode(); + changes to mbrep() and make_mbchar(). (DLR) - Store Unicode values in longs instead of ints, and cover the entire range of Unicode. Changes to make_mbchar(), is_valid_unicode(), parse_kbinput(), get_unicode_kbinput(), diff --git a/src/chars.c b/src/chars.c index 5453348a..e51547bc 100644 --- a/src/chars.c +++ b/src/chars.c @@ -884,12 +884,12 @@ bool has_blank_mbchars(const char *s) #endif /* !DISABLE_JUSTIFY */ #ifdef ENABLE_UTF8 -/* Return TRUE if wc is valid Unicode (i.e, it's not negative or in the - * ranges D800-DFFF or FFFE-FFFF), and FALSE otherwise. */ +/* Return TRUE if wc is valid Unicode, and FALSE otherwise. */ bool is_valid_unicode(wchar_t wc) { - return (0 <= wc && (wc <= 0xD7FF || 0xE000 <= wc) && (wc <= - 0xFFFD || 0x10000 <= wc)); + return ((0 <= wc && wc <= 0x10FFFF) && (wc <= 0xD7FF || 0xE000 <= + wc) && (wc <= 0xFDCF || 0xFDF0 <= wc) && ((wc & 0xFFFF) <= + 0xFFFD)); } #endif