Alexander Belopolsky <belopol...@users.sourceforge.net> added the comment:

Let me summarize the issue: the PyArg_ParseTuple format code 'O' returns a 
borrowed reference.  However, when the 'O' code appears inside parenthesis, 
there may not be an object to hold the reference to borrow from.  This is what 
happens in the test-functools.py crasher:  partial.__setstate__() takes a 
4-tuple argument that is unpacked using a "(OOOO)" format.  The test case 
passes an instance instead of a tuple that supports the sequence methods, but 
does not hold the reference to the "items" that its []-operator returns.  This 
is not a problem at the top level because args argument to PyArg_ParseTuple is 
always a real tuple.

I think that rather than deprecating the use of 'O' format inside parentheses, 
"(..O..)" unpacking should reject to unpack arguments other than tuples or 
maybe lists.

----------
nosy: +belopolsky
stage:  -> needs patch

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue6083>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to