]> granicus.if.org Git - python/commitdiff
Issue #28665: Use macro form of PyCell_GET/SET
authorRaymond Hettinger <python@rcn.com>
Sat, 12 Nov 2016 09:10:35 +0000 (04:10 -0500)
committerRaymond Hettinger <python@rcn.com>
Sat, 12 Nov 2016 09:10:35 +0000 (04:10 -0500)
Python/ceval.c

index fe562a8450bf04b9d02979f0b14766d591040217..eefe66f6cdb0bb19dacc6b13ba5f54af2acad843 100644 (file)
@@ -2405,8 +2405,10 @@ _PyEval_EvalFrameDefault(PyFrameObject *f, int throwflag)
 
         TARGET(DELETE_DEREF) {
             PyObject *cell = freevars[oparg];
-            if (PyCell_GET(cell) != NULL) {
-                PyCell_Set(cell, NULL);
+            PyObject *oldobj = PyCell_GET(cell);
+            if (oldobj != NULL) {
+                PyCell_SET(cell, NULL);
+                Py_DECREF(oldobj);
                 DISPATCH();
             }
             format_exc_unbound(co, oparg);
@@ -5351,8 +5353,10 @@ unicode_concatenate(PyObject *v, PyObject *w,
             PyObject **freevars = (f->f_localsplus +
                                    f->f_code->co_nlocals);
             PyObject *c = freevars[oparg];
-            if (PyCell_GET(c) == v)
-                PyCell_Set(c, NULL);
+            if (PyCell_GET(c) ==  v) {
+                PyCell_SET(c, NULL);
+                Py_DECREF(v);
+            }
             break;
         }
         case STORE_NAME: