From c32f9db846ca6f66fa541aee73069d9324b863b7 Mon Sep 17 00:00:00 2001 From: Raymond Hettinger Date: Sat, 12 Nov 2016 04:10:35 -0500 Subject: [PATCH] Issue #28665: Use macro form of PyCell_GET/SET --- Python/ceval.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/Python/ceval.c b/Python/ceval.c index fe562a8450b..eefe66f6cdb 100644 --- a/Python/ceval.c +++ b/Python/ceval.c @@ -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: