]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Verify that the code in CJK UNIFIED IDEOGRAPH- actually denotes an ideograph.
authorMartin v. Löwis <martin@v.loewis.de>
Sat, 23 Nov 2002 22:10:29 +0000 (22:10 +0000)
committerMartin v. Löwis <martin@v.loewis.de>
Sat, 23 Nov 2002 22:10:29 +0000 (22:10 +0000)
Modules/unicodedata.c

index 502b5bd8557454dce6f88e78ee913dea499d6f18..c5ba6fc4b4437f7a20f051815c203b39b45a5ed1 100644 (file)
@@ -580,6 +580,15 @@ static char *hangul_syllables[][3] = {
     { 0,    0,     "H"  }
 };
 
+static int
+is_unified_ideograph(Py_UCS4 code)
+{
+    return (
+        (0x3400 <= code && code <= 0x4DB5) || /* CJK Ideograph Extension A */
+        (0x4E00 <= code && code <= 0x9FA5) || /* CJK Ideograph */
+        (0x20000 <= code && code <= 0x2A6D6));/* CJK Ideograph Extension B */
+}
+
 static int
 _getucname(Py_UCS4 code, char* buffer, int buflen)
 {
@@ -610,9 +619,7 @@ _getucname(Py_UCS4 code, char* buffer, int buflen)
        return 1;
     }
 
-    if ((0x3400 <= code && code <= 0x4DB5) ||  /* CJK Ideograph Extension A */
-        (0x4E00 <= code && code <= 0x9FA5) ||  /* CJK Ideograph */
-        (0x20000 <= code && code <= 0x2A6D6)) {/* CJK Ideograph Extension B */
+    if (is_unified_ideograph(code)) {
         if (buflen < 28)
             /* Worst case: CJK UNIFIED IDEOGRAPH-20000 */
             return 0;
@@ -743,6 +750,8 @@ _getcode(const char* name, int namelen, Py_UCS4* code)
                 return 0;
             name++;
         }
+        if (!is_unified_ideograph(v))
+            return 0;
         *code = v;
         return 1;
     }