Author: Philip Jenvey <[email protected]>
Branch: py3k
Changeset: r66948:4e8538d98f8d
Date: 2013-09-14 15:34 -0700
http://bitbucket.org/pypy/pypy/changeset/4e8538d98f8d/

Log:    issue #1601: fix wide build detection, we_are_translated doesn't
        work at module level!

diff --git a/pypy/module/_codecs/locale.py b/pypy/module/_codecs/locale.py
--- a/pypy/module/_codecs/locale.py
+++ b/pypy/module/_codecs/locale.py
@@ -12,13 +12,6 @@
 from rpython.rtyper.lltypesystem import lltype, rffi
 from rpython.translator.tool.cbuild import ExternalCompilationInfo
 
-if we_are_translated():
-    UNICHAR_SIZE = rffi.sizeof(lltype.UniChar)
-else:
-    UNICHAR_SIZE = 2 if sys.maxunicode == 0xFFFF else 4
-MERGE_SURROGATES = UNICHAR_SIZE == 2 and rffi.sizeof(rffi.WCHAR_T) == 4
-
-
 cwd = py.path.local(__file__).dirpath()
 eci = ExternalCompilationInfo(
     includes=[cwd.join('locale.h')],
@@ -114,7 +107,10 @@
 
 def unicode2rawwcharp(u):
     """unicode -> raw wchar_t*"""
-    size = _unicode2rawwcharp_loop(u, None) if MERGE_SURROGATES else len(u)
+    if _should_merge_surrogates():
+        size = _unicode2rawwcharp_loop(u, None)
+    else:
+        size = len(u)
     array = lltype.malloc(RAW_WCHARP.TO, size + 1, flavor='raw')
     array[size] = rffi.cast(rffi.WCHAR_T, u'\x00')
     _unicode2rawwcharp_loop(u, array)
@@ -127,7 +123,7 @@
     count = i = 0
     while i < ulen:
         oc = ord(u[i])
-        if (MERGE_SURROGATES and
+        if (_should_merge_surrogates() and
             0xD800 <= oc <= 0xDBFF and i + 1 < ulen and
             0xDC00 <= ord(u[i + 1]) <= 0xDFFF):
             if write:
@@ -152,3 +148,11 @@
         i += 1
     return assert_str0(b.build())
 rawwcharp2unicoden._annenforceargs_ = [None, int]
+
+
+def _should_merge_surrogates():
+    if we_are_translated():
+        unichar_size = rffi.sizeof(lltype.UniChar)
+    else:
+        unichar_size = 2 if sys.maxunicode == 0xFFFF else 4
+    return unichar_size == 2 and rffi.sizeof(rffi.WCHAR_T) == 4
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to