Browse Source
bpo-33677: Fix signatures of tp_clear handlers for AST and deque. (GH-7196)
pull/7273/head
Serhiy Storchaka
8 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with
8 additions and
5 deletions
-
Modules/_collectionsmodule.c
-
Parser/asdl_c.py
-
Python/Python-ast.c
|
|
|
@ -575,7 +575,7 @@ deque_concat(dequeobject *deque, PyObject *other) |
|
|
|
return new_deque; |
|
|
|
} |
|
|
|
|
|
|
|
static void |
|
|
|
static int |
|
|
|
deque_clear(dequeobject *deque) |
|
|
|
{ |
|
|
|
block *b; |
|
|
|
@ -587,7 +587,7 @@ deque_clear(dequeobject *deque) |
|
|
|
PyObject **itemptr, **limit; |
|
|
|
|
|
|
|
if (Py_SIZE(deque) == 0) |
|
|
|
return; |
|
|
|
return 0; |
|
|
|
|
|
|
|
/* During the process of clearing a deque, decrefs can cause the |
|
|
|
deque to mutate. To avoid fatal confusion, we have to make the |
|
|
|
@ -648,7 +648,7 @@ deque_clear(dequeobject *deque) |
|
|
|
} |
|
|
|
CHECK_END(leftblock->rightlink); |
|
|
|
freeblock(leftblock); |
|
|
|
return; |
|
|
|
return 0; |
|
|
|
|
|
|
|
alternate_method: |
|
|
|
while (Py_SIZE(deque)) { |
|
|
|
@ -656,6 +656,7 @@ deque_clear(dequeobject *deque) |
|
|
|
assert (item != NULL); |
|
|
|
Py_DECREF(item); |
|
|
|
} |
|
|
|
return 0; |
|
|
|
} |
|
|
|
|
|
|
|
static PyObject * |
|
|
|
|
|
|
|
@ -647,10 +647,11 @@ ast_traverse(AST_object *self, visitproc visit, void *arg) |
|
|
|
return 0; |
|
|
|
} |
|
|
|
|
|
|
|
static void |
|
|
|
static int |
|
|
|
ast_clear(AST_object *self) |
|
|
|
{ |
|
|
|
Py_CLEAR(self->dict); |
|
|
|
return 0; |
|
|
|
} |
|
|
|
|
|
|
|
static int |
|
|
|
|
|
|
|
@ -528,10 +528,11 @@ ast_traverse(AST_object *self, visitproc visit, void *arg) |
|
|
|
return 0; |
|
|
|
} |
|
|
|
|
|
|
|
static void |
|
|
|
static int |
|
|
|
ast_clear(AST_object *self) |
|
|
|
{ |
|
|
|
Py_CLEAR(self->dict); |
|
|
|
return 0; |
|
|
|
} |
|
|
|
|
|
|
|
static int |
|
|
|
|