[Python-Dev] How to fix the buffer object's broken char buffer support (original) (raw)
Brett Cannon brett at python.org
Wed Jun 7 00:29:40 CEST 2006
- Previous message: [Python-Dev] Stdlib Logging questions (PEP 337 SoC)
- Next message: [Python-Dev] How to fix the buffer object's broken char buffer support
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
If you run import array; int(buffer(array.array('c')))
the
interpreter will segfault. While investigating this I discovered that
buffer objects, for their tp_as_buffer->bf_getcharbuffer, return the
result by calling the wrapped object bf_getreadbuffer or
bf_getwritebuffer. This is wrong since it is essentially redirecting
the expected call to the wrong tp_as_buffer slot for the wrapped
object. Plus it doesn't have Py_TPFLAGS_HAVE_GETCHARBUFFER defined.
I see two options here. One is to remove the bf_getcharbuffer slot from the buffer object. The other option is to fix it so that it only returns bf_getcharbuffer and doesn't redirect improperly (this also brings up the issue if Py_TPFLAGS_HAVE_GETCHARBUFFER should then also be defined for buffer objects).
Since I don't use buffer objects I don't know if it is better to fix this or just rip it out.
-Brett
- Previous message: [Python-Dev] Stdlib Logging questions (PEP 337 SoC)
- Next message: [Python-Dev] How to fix the buffer object's broken char buffer support
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]