Message126226
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. |
|
Date |
User |
Action |
Args |
2011-01-14 04:55:20 | belopolsky | set | recipients:
+ belopolsky, loewis, georg.brandl, billm, abacabadabacaba |
2011-01-14 04:55:20 | belopolsky | set | messageid: <1294980920.06.0.0192263893688.issue6083@psf.upfronthosting.co.za> |
2011-01-14 04:55:18 | belopolsky | link | issue6083 messages |
2011-01-14 04:55:18 | belopolsky | create | |
|