Sorry, r67092 is commit miss....

This commit is contained in:
Hirokazu Yamamoto 2008-11-04 00:35:10 +00:00
parent 1543a22d86
commit b46a633eaf
2 changed files with 8 additions and 21 deletions

View File

@ -345,9 +345,6 @@ class _Pickler:
else:
self.write(PERSID + str(pid).encode("ascii") + b'\n')
def _isiter(self, obj):
return hasattr(obj, '__next__') and hasattr(obj, '__iter__')
def save_reduce(self, func, args, state=None,
listitems=None, dictitems=None, obj=None):
# This API is called by some subclasses
@ -360,16 +357,6 @@ class _Pickler:
if not hasattr(func, '__call__'):
raise PicklingError("func from save_reduce() should be callable")
# Assert that listitems is an iterator
if listitems is not None and not self._isiter(listitems):
raise PicklingError("listitems from save_reduce() should be an "
"iterator")
# Assert that dictitems is an iterator
if dictitems is not None and not self._isiter(dictitems):
raise PicklingError("dictitems from save_reduce() should be an "
"iterator")
save = self.save
write = self.write

View File

@ -1963,6 +1963,7 @@ save_reduce(PicklerObject *self, PyObject *args, PyObject *obj)
PyObject *state = NULL;
PyObject *listitems = Py_None;
PyObject *dictitems = Py_None;
Py_ssize_t size;
int use_newobj = self->proto >= 2;
@ -1970,6 +1971,13 @@ save_reduce(PicklerObject *self, PyObject *args, PyObject *obj)
const char build_op = BUILD;
const char newobj_op = NEWOBJ;
size = PyTuple_Size(args);
if (size < 2 || size > 5) {
PyErr_SetString(PicklingError, "tuple returned by "
"__reduce__ must contain 2 through 5 elements");
return -1;
}
if (!PyArg_UnpackTuple(args, "save_reduce", 2, 5,
&callable, &argtup, &state, &listitems, &dictitems))
return -1;
@ -2146,7 +2154,6 @@ save(PicklerObject *self, PyObject *obj, int pers_save)
PyObject *reduce_value = NULL;
PyObject *memo_key = NULL;
int status = 0;
Py_ssize_t size;
if (Py_EnterRecursiveCall(" while pickling an object") < 0)
return -1;
@ -2325,13 +2332,6 @@ save(PicklerObject *self, PyObject *obj, int pers_save)
goto error;
}
size = PyTuple_Size(reduce_value);
if (size < 2 || size > 5) {
PyErr_SetString(PicklingError, "tuple returned by "
"__reduce__ must contain 2 through 5 elements");
goto error;
}
status = save_reduce(self, reduce_value, obj);
if (0) {