]> granicus.if.org Git - python/commitdiff
fix refleak in deque_concat
authorBenjamin Peterson <benjamin@python.org>
Sat, 4 Apr 2015 14:52:36 +0000 (10:52 -0400)
committerBenjamin Peterson <benjamin@python.org>
Sat, 4 Apr 2015 14:52:36 +0000 (10:52 -0400)
Modules/_collectionsmodule.c

index 9f6c47f54a9eb74d5b41b9658e6efdbc25fcdbc5..2b70b2ba0605f2b553e9907c26dd568ca4b2dd5a 100644 (file)
@@ -507,7 +507,7 @@ static PyObject *deque_copy(PyObject *deque);
 static PyObject *
 deque_concat(dequeobject *deque, PyObject *other)
 {
-    PyObject *new_deque;
+    PyObject *new_deque, *result;
     int rv;
 
     rv = PyObject_IsInstance(other, (PyObject *)&deque_type);
@@ -523,7 +523,13 @@ deque_concat(dequeobject *deque, PyObject *other)
     new_deque = deque_copy((PyObject *)deque);
     if (new_deque == NULL)
         return NULL;
-    return deque_inplace_concat((dequeobject *)new_deque, other);
+    result = deque_extend((dequeobject *)new_deque, other);
+    if (result == NULL) {
+        Py_DECREF(new_deque);
+        return NULL;
+    }
+    Py_DECREF(result);
+    return new_deque;
 }
 
 static void deque_clear(dequeobject *deque);