This prevents unbounded recursion in typeobject.c's object_reduce_ex(). It does so by splitting implementation for object.__reduce_ex__ and object.__reduce__ into two different C functions. See the apended file details.txt for more detailed explanation.
I would like to backport this patch to the 2.5 branch so I made a new wersion that is fully backwards compatible (well, except for the segfault :). Georg, could you please take another look? And thanks for all the reviews, I can hardly keep up :). File Added: typeobject_reduce_2.diff