Author: Armin Rigo <[email protected]>
Branch:
Changeset: r49465:914c5625808a
Date: 2011-11-16 12:37 +0100
http://bitbucket.org/pypy/pypy/changeset/914c5625808a/
Log: Fix.
diff --git a/pypy/rpython/lltypesystem/rffi.py
b/pypy/rpython/lltypesystem/rffi.py
--- a/pypy/rpython/lltypesystem/rffi.py
+++ b/pypy/rpython/lltypesystem/rffi.py
@@ -862,12 +862,14 @@
try:
unsigned = not tp._type.SIGNED
except AttributeError:
- if (not isinstance(tp, lltype.Primitive) or
- tp in (FLOAT, DOUBLE) or
- cast(lltype.SignedLongLong, cast(tp, -1)) < 0):
+ if not isinstance(tp, lltype.Primitive):
unsigned = False
+ elif tp in (lltype.Signed, FLOAT, DOUBLE):
+ unsigned = False
+ elif tp in (lltype.Char, lltype.UniChar, lltype.Bool):
+ unsigned = True
else:
- unsigned = True
+ raise AssertionError("size_and_sign(%r)" % (tp,))
return size, unsigned
def sizeof(tp):
diff --git a/pypy/rpython/lltypesystem/test/test_rffi.py
b/pypy/rpython/lltypesystem/test/test_rffi.py
--- a/pypy/rpython/lltypesystem/test/test_rffi.py
+++ b/pypy/rpython/lltypesystem/test/test_rffi.py
@@ -743,8 +743,9 @@
assert sizeof(lltype.Typedef(ll, 'test')) == sizeof(ll)
assert not size_and_sign(lltype.Signed)[1]
assert size_and_sign(lltype.Char) == (1, True)
- assert not size_and_sign(lltype.UniChar)[1]
+ assert size_and_sign(lltype.UniChar)[1]
assert size_and_sign(UINT)[1]
+ assert not size_and_sign(INT)[1]
def test_rffi_offsetof(self):
import struct
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit