Skip to content

Commit 86b8991

Browse files
sir-sigurdserhiy-storchaka
authored andcommitted
Fix upsizing of marks stack in pickle module. (GH-8860)
Previously marks stack was upsized even there was space for additional item.
1 parent c406d5c commit 86b8991

File tree

2 files changed

+4
-4
lines changed

2 files changed

+4
-4
lines changed

Lib/test/test_pickle.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -309,9 +309,9 @@ def recurse(deep):
309309
return data
310310
check_unpickler(recurse(0), 32, 0)
311311
check_unpickler(recurse(1), 32, 20)
312-
check_unpickler(recurse(20), 32, 58)
313-
check_unpickler(recurse(50), 64, 58)
314-
check_unpickler(recurse(100), 128, 134)
312+
check_unpickler(recurse(20), 32, 20)
313+
check_unpickler(recurse(50), 64, 60)
314+
check_unpickler(recurse(100), 128, 140)
315315

316316
u = unpickler(io.BytesIO(pickle.dumps('a', 0)),
317317
encoding='ASCII', errors='strict')

Modules/_pickle.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6288,7 +6288,7 @@ load_mark(UnpicklerObject *self)
62886288
* mark stack.
62896289
*/
62906290

6291-
if ((self->num_marks + 1) >= self->marks_size) {
6291+
if (self->num_marks >= self->marks_size) {
62926292
size_t alloc;
62936293

62946294
/* Use the size_t type to check for overflow. */

0 commit comments

Comments
 (0)