[Python-checkins] python/dist/src/Modules unicodedata.c,2.24,2.25

loewis@users.sourceforge.net loewis@users.sourceforge.net
Sat, 23 Nov 2002 14:10:31 -0800


Update of /cvsroot/python/python/dist/src/Modules
In directory sc8-pr-cvs1:/tmp/cvs-serv14419/Modules

Modified Files:
	unicodedata.c 
Log Message:
Verify that the code in CJK UNIFIED IDEOGRAPH- actually denotes an ideograph.


Index: unicodedata.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Modules/unicodedata.c,v
retrieving revision 2.24
retrieving revision 2.25
diff -C2 -d -r2.24 -r2.25
*** unicodedata.c	23 Nov 2002 22:08:15 -0000	2.24
--- unicodedata.c	23 Nov 2002 22:10:29 -0000	2.25
***************
*** 582,585 ****
--- 582,594 ----
  
  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)
  {
***************
*** 611,617 ****
      }
  
!     if ((0x3400 <= code && code <= 0x4DB5) ||  /* CJK Ideograph Extension A */
!         (0x4E00 <= code && code <= 0x9FA5) ||  /* CJK Ideograph */
!         (0x20000 <= code && code <= 0x2A6D6)) {/* CJK Ideograph Extension B */
          if (buflen < 28)
              /* Worst case: CJK UNIFIED IDEOGRAPH-20000 */
--- 620,624 ----
      }
  
!     if (is_unified_ideograph(code)) {
          if (buflen < 28)
              /* Worst case: CJK UNIFIED IDEOGRAPH-20000 */
***************
*** 744,747 ****
--- 751,756 ----
              name++;
          }
+         if (!is_unified_ideograph(v))
+             return 0;
          *code = v;
          return 1;