[pypy-commit] pypy default: merge heads
bdkearns
noreply at buildbot.pypy.org
Thu Mar 7 10:18:23 CET 2013
Author: Brian Kearns <bdkearns at gmail.com>
Branch:
Changeset: r62170:75a2ee7a0a13
Date: 2013-03-07 04:18 -0500
http://bitbucket.org/pypy/pypy/changeset/75a2ee7a0a13/
Log: merge heads
diff --git a/pypy/module/_cffi_backend/cdataobj.py b/pypy/module/_cffi_backend/cdataobj.py
--- a/pypy/module/_cffi_backend/cdataobj.py
+++ b/pypy/module/_cffi_backend/cdataobj.py
@@ -92,20 +92,15 @@
cdata1 = self._cdata
other = space.interpclass_w(w_other)
if isinstance(other, W_CData):
- if requires_ordering:
- if (isinstance(self.ctype, W_CTypePrimitive) or
- isinstance(other.ctype, W_CTypePrimitive)):
- raise OperationError(space.w_TypeError,
- space.wrap("cannot do comparison on a "
- "primitive cdata"))
cdata2 = other._cdata
- elif (misc.is_zero(space, w_other) and
- not isinstance(self.ctype, W_CTypePrimitive)):
- cdata2 = lltype.nullptr(rffi.CCHARP.TO)
else:
return space.w_NotImplemented
if requires_ordering:
+ if (isinstance(self.ctype, W_CTypePrimitive) or
+ isinstance(other.ctype, W_CTypePrimitive)):
+ raise OperationError(space.w_TypeError,
+ space.wrap("cannot do comparison on a primitive cdata"))
cdata1 = rffi.cast(lltype.Unsigned, cdata1)
cdata2 = rffi.cast(lltype.Unsigned, cdata2)
return space.newbool(op(cdata1, cdata2))
diff --git a/pypy/module/_cffi_backend/ctypeptr.py b/pypy/module/_cffi_backend/ctypeptr.py
--- a/pypy/module/_cffi_backend/ctypeptr.py
+++ b/pypy/module/_cffi_backend/ctypeptr.py
@@ -154,10 +154,6 @@
space = self.space
ob = space.interpclass_w(w_ob)
if not isinstance(ob, cdataobj.W_CData):
- if misc.is_zero(space, w_ob):
- NULL = lltype.nullptr(rffi.CCHARP.TO)
- rffi.cast(rffi.CCHARPP, cdata)[0] = NULL
- return
raise self._convert_error("cdata pointer", w_ob)
other = ob.ctype
if not isinstance(other, W_CTypePtrBase):
@@ -261,15 +257,7 @@
def _prepare_pointer_call_argument(self, w_init, cdata):
space = self.space
- if misc.is_zero(space, w_init):
- # Convert 0 to NULL. Note that passing 0 is not ambigous,
- # despite the potential confusion: as a 'T*' argument, 0 means
- # NULL, but as a 'T[]' argument it would mean "array of size 0"
- # --- except that we specifically refuse to interpret numbers
- # as the array size when passing arguments.
- rffi.cast(rffi.CCHARPP, cdata)[0] = lltype.nullptr(rffi.CCHARP.TO)
- return 3
- elif (space.isinstance_w(w_init, space.w_list) or
+ if (space.isinstance_w(w_init, space.w_list) or
space.isinstance_w(w_init, space.w_tuple)):
length = space.int_w(space.len(w_init))
elif space.isinstance_w(w_init, space.w_basestring):
diff --git a/pypy/module/_cffi_backend/misc.py b/pypy/module/_cffi_backend/misc.py
--- a/pypy/module/_cffi_backend/misc.py
+++ b/pypy/module/_cffi_backend/misc.py
@@ -203,11 +203,6 @@
neg_msg = "can't convert negative number to unsigned"
ovf_msg = "long too big to convert"
-def is_zero(space, w_ob):
- return ((space.isinstance_w(w_ob, space.w_int) or
- space.isinstance_w(w_ob, space.w_long))
- and not space.is_true(w_ob))
-
# ____________________________________________________________
class _NotStandardObject(Exception):
diff --git a/pypy/module/_cffi_backend/test/_backend_test_c.py b/pypy/module/_cffi_backend/test/_backend_test_c.py
--- a/pypy/module/_cffi_backend/test/_backend_test_c.py
+++ b/pypy/module/_cffi_backend/test/_backend_test_c.py
@@ -387,19 +387,8 @@
assert (x != None) is True
assert (x == ["hello"]) is False
assert (x != ["hello"]) is True
-
-def test_cmp_pointer_with_0():
- p = new_pointer_type(new_primitive_type("int"))
- x = cast(p, 0)
- assert (x == 0) is True
- assert (x != 0) is False
- assert (0 == x) is True
- assert (0 != x) is False
- y = cast(p, 42)
- assert (y == 0) is False
- assert (y != 0) is True
- assert (0 == y) is False
- assert (0 != y) is True
+ y = cast(p, 0)
+ assert (y == None) is False
def test_invalid_indexing():
p = new_primitive_type("int")
@@ -779,7 +768,7 @@
assert s.a2 == 456
assert s.a3 == 0
assert s.p4 == cast(BVoidP, 0)
- assert s.p4 == 0
+ assert s.p4 != 0
#
s = newp(BStructPtr, {'a2': 41122, 'a3': -123})
assert s.a1 == 0
@@ -792,14 +781,11 @@
p = newp(BIntPtr, 14141)
s = newp(BStructPtr, [12, 34, 56, p])
assert s.p4 == p
- s.p4 = 0
- assert s.p4 == 0
+ assert s.p4
#
s = newp(BStructPtr, [12, 34, 56, cast(BVoidP, 0)])
- assert s.p4 == 0
- #
- s = newp(BStructPtr, [12, 34, 56, 0])
assert s.p4 == cast(BVoidP, 0)
+ assert not s.p4
#
py.test.raises(TypeError, newp, BStructPtr, [12, 34, 56, None])
@@ -1017,11 +1003,10 @@
f = cast(BFunc23, _testfunc(23))
res = f(b"foo")
assert res == 1000 * ord(b'f')
- res = f(0) # NULL
- assert res == -42
- res = f(long(0)) # NULL
+ res = f(cast(BVoidP, 0)) # NULL
assert res == -42
py.test.raises(TypeError, f, None)
+ py.test.raises(TypeError, f, 0)
py.test.raises(TypeError, f, 0.0)
def test_call_function_23_bis():
More information about the pypy-commit
mailing list