File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -45,6 +45,10 @@ Library
4545- Issues #24099, #24100, and #24101: Fix free-after-use bug in heapq's siftup
4646 and siftdown functions.
4747
48+ - Backport collections.deque fixes from Python 3.5. Prevents reentrant badness
49+ during deletion by deferring the decref until the container has been restored
50+ to a consistent state.
51+
4852- Issue #23008: Fixed resolving attributes with boolean value is False in pydoc.
4953
5054- Fix asyncio issue 235: LifoQueue and PriorityQueue's put didn't
Original file line number Diff line number Diff line change @@ -698,9 +698,9 @@ deque_remove(dequeobject *deque, PyObject *value)
698698 if (cmp > 0 ) {
699699 PyObject * tgt = deque_popleft (deque , NULL );
700700 assert (tgt != NULL );
701- Py_DECREF (tgt );
702- if (_deque_rotate (deque , i ) == -1 )
701+ if (_deque_rotate (deque , i ))
703702 return NULL ;
703+ Py_DECREF (tgt );
704704 Py_RETURN_NONE ;
705705 }
706706 else if (cmp < 0 ) {
@@ -781,16 +781,16 @@ static int
781781deque_del_item (dequeobject * deque , Py_ssize_t i )
782782{
783783 PyObject * item ;
784+ int rv ;
784785
785786 assert (i >= 0 && i < Py_SIZE (deque ));
786- if (_deque_rotate (deque , - i ) == -1 )
787+ if (_deque_rotate (deque , - i ))
787788 return -1 ;
788-
789789 item = deque_popleft (deque , NULL );
790+ rv = _deque_rotate (deque , i );
790791 assert (item != NULL );
791792 Py_DECREF (item );
792-
793- return _deque_rotate (deque , i );
793+ return rv ;
794794}
795795
796796static int
You can’t perform that action at this time.
0 commit comments