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
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to