]> granicus.if.org Git - python/commitdiff
Issue #26200: The SETREF macro adds unnecessary work in some cases.
authorRaymond Hettinger <python@rcn.com>
Tue, 9 Feb 2016 04:34:49 +0000 (20:34 -0800)
committerRaymond Hettinger <python@rcn.com>
Tue, 9 Feb 2016 04:34:49 +0000 (20:34 -0800)
Modules/_collectionsmodule.c

index 479b0525a61a69c677c9ae08107ce2de328e6b3c..0b7a88f9749d48f89130a1030c4f8c17e456b564 100644 (file)
@@ -1218,6 +1218,7 @@ deque_del_item(dequeobject *deque, Py_ssize_t i)
 static int
 deque_ass_item(dequeobject *deque, Py_ssize_t i, PyObject *v)
 {
+    PyObject *old_value;
     block *b;
     Py_ssize_t n, len=Py_SIZE(deque), halflen=(len+1)>>1, index=i;
 
@@ -1246,7 +1247,9 @@ deque_ass_item(dequeobject *deque, Py_ssize_t i, PyObject *v)
             b = b->leftlink;
     }
     Py_INCREF(v);
-    Py_SETREF(b->data[i], v);
+    old_value = b->data[i];
+    b->data[i] = v;
+    Py_DECREF(old_value);
     return 0;
 }