Skip to content
This repository was archived by the owner on Sep 10, 2022. It is now read-only.

Commit fe8602d

Browse files
committed
Use C89 for loops in backported pickle patch
1 parent 54b7c59 commit fe8602d

File tree

2 files changed

+72
-0
lines changed

2 files changed

+72
-0
lines changed
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
From: Anthony Sottile <asottile@umich.edu>
2+
Date: Fri, 29 Mar 2019 14:32:49 -0700
3+
Subject: Use C89 for loops in backported pickle patch
4+
5+
---
6+
Modules/_pickle.c | 11 +++++++----
7+
1 file changed, 7 insertions(+), 4 deletions(-)
8+
9+
diff --git a/Modules/_pickle.c b/Modules/_pickle.c
10+
index fcb9e87..3b4003f 100644
11+
--- a/Modules/_pickle.c
12+
+++ b/Modules/_pickle.c
13+
@@ -658,6 +658,7 @@ PyMemoTable_New(void)
14+
static PyMemoTable *
15+
PyMemoTable_Copy(PyMemoTable *self)
16+
{
17+
+ size_t i;
18+
PyMemoTable *new = PyMemoTable_New();
19+
if (new == NULL)
20+
return NULL;
21+
@@ -674,7 +675,7 @@ PyMemoTable_Copy(PyMemoTable *self)
22+
PyErr_NoMemory();
23+
return NULL;
24+
}
25+
- for (size_t i = 0; i < self->mt_allocated; i++) {
26+
+ for (i = 0; i < self->mt_allocated; i++) {
27+
Py_XINCREF(self->mt_table[i].me_key);
28+
}
29+
memcpy(new->mt_table, self->mt_table,
30+
@@ -4198,13 +4199,14 @@ static PyObject *
31+
_pickle_PicklerMemoProxy_copy_impl(PicklerMemoProxyObject *self)
32+
/*[clinic end generated code: output=bb83a919d29225ef input=b73043485ac30b36]*/
33+
{
34+
+ size_t i;
35+
PyMemoTable *memo;
36+
PyObject *new_memo = PyDict_New();
37+
if (new_memo == NULL)
38+
return NULL;
39+
40+
memo = self->pickler->memo;
41+
- for (size_t i = 0; i < memo->mt_allocated; ++i) {
42+
+ for (i = 0; i < memo->mt_allocated; ++i) {
43+
PyMemoEntry entry = memo->mt_table[i];
44+
if (entry.me_key != NULL) {
45+
int status;
46+
@@ -6773,6 +6775,7 @@ Unpickler_get_memo(UnpicklerObject *self)
47+
static int
48+
Unpickler_set_memo(UnpicklerObject *self, PyObject *obj)
49+
{
50+
+ size_t i;
51+
PyObject **new_memo;
52+
size_t new_memo_size = 0;
53+
54+
@@ -6791,7 +6794,7 @@ Unpickler_set_memo(UnpicklerObject *self, PyObject *obj)
55+
if (new_memo == NULL)
56+
return -1;
57+
58+
- for (size_t i = 0; i < new_memo_size; i++) {
59+
+ for (i = 0; i < new_memo_size; i++) {
60+
Py_XINCREF(unpickler->memo[i]);
61+
new_memo[i] = unpickler->memo[i];
62+
}
63+
@@ -6839,7 +6842,7 @@ Unpickler_set_memo(UnpicklerObject *self, PyObject *obj)
64+
65+
error:
66+
if (new_memo_size) {
67+
- for (size_t i = new_memo_size - 1; i != SIZE_MAX; i--) {
68+
+ for (i = new_memo_size - 1; i != SIZE_MAX; i--) {
69+
Py_XDECREF(new_memo[i]);
70+
}
71+
PyMem_FREE(new_memo);

debian/patches/series

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,3 +36,4 @@ distutils-packaging-link.diff
3636
turtledemo-add-shebang.diff
3737
deadsnakes-ignore-sphinx-version.diff
3838
deadsnakes-revert-issue24421
39+
0039-Use-C89-for-loops-in-backported-pickle-patch.patch

0 commit comments

Comments
 (0)