From 827fdaae30e4ee10d86a7679d7fa1c8863235ba1 Mon Sep 17 00:00:00 2001 From: Alexander Belopolsky Date: Tue, 30 Nov 2010 16:56:15 +0000 Subject: [PATCH] Issue #10552: Partially fixed a sort error in Tools/unicode/gencodec.py --- Tools/unicode/gencodec.py | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/Tools/unicode/gencodec.py b/Tools/unicode/gencodec.py index 65fe5e5d82..7e7d6d0661 100644 --- a/Tools/unicode/gencodec.py +++ b/Tools/unicode/gencodec.py @@ -34,6 +34,9 @@ MAX_TABLE_SIZE = 8192 # Standard undefined Unicode code point UNI_UNDEFINED = chr(0xFFFE) +# Placeholder for a missing codepoint +MISSING_CODE = -1 + mapRE = re.compile('((?:0x[0-9a-fA-F]+\+?)+)' '\s+' '((?:(?:0x[0-9a-fA-Z]+|<[A-Za-z]+>)\+?)*)' @@ -52,7 +55,7 @@ def parsecodes(codes, len=len, range=range): """ if not codes: - return None + return MISSING_CODE l = codes.split('+') if len(l) == 1: return int(l[0],16) @@ -60,8 +63,8 @@ def parsecodes(codes, len=len, range=range): try: l[i] = int(l[i],16) except ValueError: - l[i] = None - l = [x for x in l if x is not None] + l[i] = MISSING_CODE + l = [x for x in l if x != MISSING_CODE] if len(l) == 1: return l[0] else: @@ -113,7 +116,7 @@ def readmap(filename): # mappings to None for the rest if len(identity) >= len(unmapped): for enc in unmapped: - enc2uni[enc] = (None, "") + enc2uni[enc] = (MISSING_CODE, "") enc2uni['IDENTITY'] = 256 return enc2uni @@ -211,7 +214,7 @@ def python_tabledef_code(varname, map, comments=1, key_precision=2): (mapkey, mapcomment) = mapkey if isinstance(mapvalue, tuple): (mapvalue, mapcomment) = mapvalue - if mapkey is None: + if mapkey == MISSING_CODE: continue table[mapkey] = (mapvalue, mapcomment) if mapkey > maxkey: @@ -223,11 +226,11 @@ def python_tabledef_code(varname, map, comments=1, key_precision=2): # Create table code for key in range(maxkey + 1): if key not in table: - mapvalue = None + mapvalue = MISSING_CODE mapcomment = 'UNDEFINED' else: mapvalue, mapcomment = table[key] - if mapvalue is None: + if mapvalue == MISSING_CODE: mapchar = UNI_UNDEFINED else: if isinstance(mapvalue, tuple): -- 2.40.0