Author: Armin Rigo <[email protected]>
Branch:
Changeset: r1396:2e0764ba0a2a
Date: 2013-11-09 09:17 +0100
http://bitbucket.org/cffi/cffi/changeset/2e0764ba0a2a/
Log: Support "number + pointer" too, like in C
diff --git a/c/_cffi_backend.c b/c/_cffi_backend.c
--- a/c/_cffi_backend.c
+++ b/c/_cffi_backend.c
@@ -2054,8 +2054,15 @@
CDataObject *cd;
CTypeDescrObject *ctptr;
- if (!CData_Check(v))
- goto not_implemented;
+ if (!CData_Check(v)) {
+ PyObject *swap;
+ assert(CData_Check(w));
+ if (sign != 1)
+ goto not_implemented;
+ swap = v;
+ v = w;
+ w = swap;
+ }
i = PyNumber_AsSsize_t(w, PyExc_OverflowError);
if (i == -1 && PyErr_Occurred())
diff --git a/c/test_c.py b/c/test_c.py
--- a/c/test_c.py
+++ b/c/test_c.py
@@ -553,6 +553,7 @@
assert repr(a) == "<cdata 'int[3][5]' owning %d bytes>" % (
3*5*size_of_int(),)
assert repr(a + 0).startswith("<cdata 'int(*)[5]' 0x")
+ assert 0 + a == a + 0 != 1 + a == a + 1
assert repr(a[0]).startswith("<cdata 'int[5]' 0x")
assert repr((a + 0)[0]).startswith("<cdata 'int[5]' 0x")
assert repr(a[0] + 0).startswith("<cdata 'int *' 0x")
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit