Skip to content

Commit a631a16

Browse files
committed
Fix reference leaks in _collectionsmodule.c
1 parent c9a5d9a commit a631a16

File tree

1 file changed

+6
-3
lines changed

1 file changed

+6
-3
lines changed

Modules/_collectionsmodule.c

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -342,8 +342,10 @@ deque_append_lock_held(dequeobject *deque, PyObject *item, Py_ssize_t maxlen)
342342
{
343343
if (deque->rightindex == BLOCKLEN - 1) {
344344
block *b = newblock(deque);
345-
if (b == NULL)
345+
if (b == NULL) {
346+
Py_DECREF(item);
346347
return -1;
348+
}
347349
b->leftlink = deque->rightblock;
348350
CHECK_END(deque->rightblock->rightlink);
349351
deque->rightblock->rightlink = b;
@@ -389,8 +391,10 @@ deque_appendleft_lock_held(dequeobject *deque, PyObject *item,
389391
{
390392
if (deque->leftindex == 0) {
391393
block *b = newblock(deque);
392-
if (b == NULL)
394+
if (b == NULL) {
395+
Py_DECREF(item);
393396
return -1;
397+
}
394398
b->rightlink = deque->leftblock;
395399
CHECK_END(deque->leftblock->leftlink);
396400
deque->leftblock->leftlink = b;
@@ -564,7 +568,6 @@ deque_extendleft_impl(dequeobject *deque, PyObject *iterable)
564568
iternext = *Py_TYPE(it)->tp_iternext;
565569
while ((item = iternext(it)) != NULL) {
566570
if (deque_appendleft_lock_held(deque, item, maxlen) == -1) {
567-
Py_DECREF(item);
568571
Py_DECREF(it);
569572
return NULL;
570573
}

0 commit comments

Comments
 (0)