]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Fix _sre.CODESIZE on 64-bit machines in UCS-4 mode. Fixes #931848.
authorMartin v. Löwis <martin@v.loewis.de>
Fri, 7 May 2004 07:16:33 +0000 (07:16 +0000)
committerMartin v. Löwis <martin@v.loewis.de>
Fri, 7 May 2004 07:16:33 +0000 (07:16 +0000)
Lib/sre_compile.py
Misc/NEWS
Modules/sre.h

index 8a26a0f43d2f32b901d06b4e97df5739b875ed06..6710ae91c08112b4a9cccbfb45c86ac8b2485f40 100644 (file)
@@ -308,14 +308,16 @@ def _optimize_unicode(charset, fixup):
             block = block + 1
             data = data + _mk_bitmap(chunk)
     header = [block]
-    if MAXCODE == 65535:
+    if _sre.CODESIZE == 2:
         code = 'H'
     else:
-        code = 'L'
+        code = 'I'
     # Convert block indices to byte array of 256 bytes
     mapping = array.array('b', mapping).tostring()
     # Convert byte array to word array
-    header = header + array.array(code, mapping).tolist()
+    mapping = array.array(code, mapping)
+    assert mapping.itemsize == _sre.CODESIZE
+    header = header + mapping.tolist()
     data[0:0] = header
     return [(BIGCHARSET, data)]
 
index c422b227bb836c0b1d4d219940aba280542e58ef..9fa7b9b7910794c23a5ef20ca8c1100fadef91e8 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -42,6 +42,8 @@ Core and builtins
 Library
 -------
 
+- Bug #931848: Fix _sre.CODESIZE on 64-bit machines in UCS-4 mode.
+
 - Bug #938076: Consider output encoding in XMLGenerator.
 
 - Bug #936637: Properly delegate startElementNS in saxutils.XMLFilterBase.
index a7fdfbab647f177b75681b44a4e1381cd58d853e..d416c3d1eb806e6bb6171a305bea1a3b06dae296 100644 (file)
@@ -16,7 +16,7 @@
 /* size of a code word (must be unsigned short or larger, and
    large enough to hold a Py_UNICODE character) */
 #ifdef Py_UNICODE_WIDE
-#define SRE_CODE unsigned long
+#define SRE_CODE Py_UCS4
 #else
 #define SRE_CODE unsigned short
 #endif