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