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(),
#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