Author: Matti Picus <[email protected]>
Branch: buffer-interface2
Changeset: r87117:e5be2ebc1e87
Date: 2016-09-15 06:56 +0300
http://bitbucket.org/pypy/pypy/changeset/e5be2ebc1e87/
Log: fill in tp_as_buffer.* functions that have no dunder slot
diff --git a/pypy/module/cpyext/typeobject.py b/pypy/module/cpyext/typeobject.py
--- a/pypy/module/cpyext/typeobject.py
+++ b/pypy/module/cpyext/typeobject.py
@@ -785,6 +785,22 @@
pto.c_tp_getattro = base.c_tp_getattro
if not pto.c_tp_as_buffer:
pto.c_tp_as_buffer = base.c_tp_as_buffer
+ if base.c_tp_as_buffer:
+ # also inherit all the base.c_tp_as_buffer functions, since they
+ # do not have real __slots__ they are not filled in otherwise
+ # skip bf_getbuffer, which is __buffer__
+ pto_as = pto.c_tp_as_buffer
+ base_as = base.c_tp_as_buffer
+ if not pto_as.c_bf_getreadbuffer:
+ pto_as.c_bf_getreadbuffer = base_as.c_bf_getreadbuffer
+ if not pto_as.c_bf_getwritebuffer:
+ pto_as.c_bf_getwritebuffer = base_as.c_bf_getwritebuffer
+ if not pto_as.c_bf_getsegcount:
+ pto_as.c_bf_getsegcount = base_as.c_bf_getsegcount
+ if not pto_as.c_bf_getcharbuffer:
+ pto_as.c_bf_getcharbuffer = base_as.c_bf_getcharbuffer
+ if not pto_as.c_bf_getcharbuffer:
+ pto_as.c_bf_releasebuffer = base_as.c_bf_releasebuffer
finally:
Py_DecRef(space, base_pyo)
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit