Index: Modules/cPickle.c =================================================================== --- Modules/cPickle.c (révision 76754) +++ Modules/cPickle.c (copie de travail) @@ -4117,7 +4117,7 @@ */ if (self->num_marks > 0 && self->marks[self->num_marks - 1] == len) { self->num_marks--; - } else if (len >= 0) { + } else if (len > 0) { len--; Py_DECREF(self->stack->data[len]); self->stack->length = len; Index: Lib/test/test_pickle.py =================================================================== --- Lib/test/test_pickle.py (révision 76754) +++ Lib/test/test_pickle.py (copie de travail) @@ -21,6 +21,10 @@ module = pickle error = KeyError + def test_invalid_pop(self): + self.assertRaises(IndexError, self.loads, "0") + + class PicklerTests(AbstractPickleTests): error = KeyError Index: Lib/test/test_cpickle.py =================================================================== --- Lib/test/test_cpickle.py (révision 76754) +++ Lib/test/test_cpickle.py (copie de travail) @@ -13,6 +13,10 @@ error = cPickle.BadPickleGet module = cPickle + def test_invalid_pop(self): + self.assertRaises(cPickle.UnpicklingError, self.loads, "0") + + class cPicklePicklerTests(AbstractPickleTests): def dumps(self, arg, proto=0):