]> git.wh0rd.org Git - nano.git/commitdiff
make is_valid_unicode() catch more invalid Unicode
authorDavid Lawrence Ramsey <pooka109@gmail.com>
Sun, 28 Aug 2005 03:07:13 +0000 (03:07 +0000)
committerDavid Lawrence Ramsey <pooka109@gmail.com>
Sun, 28 Aug 2005 03:07:13 +0000 (03:07 +0000)
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3003 35c25a1d-7b9e-4130-9fde-d3aeb78583b8

ChangeLog
src/chars.c

index 72a3755a216653bd78c89a3c504ccd201edea4ee..e824181eb347d5de700cc47aeb0d0698bbea4489 100644 (file)
--- 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(),
index 5453348affdb122b0b509b1d9775422e7b78bc24..e51547bc8dacffd3c1781d760677e970e4ab64fc 100644 (file)
@@ -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