Commit f1493607 authored by Guido van Rossum's avatar Guido van Rossum

_reduce(): Avoid infinite recursion in the pickler when self.__class__

doesn't have the _HEAPTYPE flag set, e.g. for time.struct_time and
posix.stat_result.

This fixes the immediate symptoms of SF bug #496873 (cPickle /
time.struct_time loop), replacing the infinite loop with an exception.
parent 8f8b4898
...@@ -53,6 +53,8 @@ def _reduce(self): ...@@ -53,6 +53,8 @@ def _reduce(self):
if base is object: if base is object:
state = None state = None
else: else:
if base is self.__class__:
raise TypeError, "can't pickle %s objects" % base.__name__
state = base(self) state = base(self)
args = (self.__class__, base, state) args = (self.__class__, base, state)
try: try:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment