From: Raymond Hettinger Date: Sat, 12 Nov 2016 09:10:35 +0000 (-0500) Subject: Issue #28665: Use macro form of PyCell_GET/SET X-Git-Tag: v3.7.0a1~2004 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=c32f9db846ca6f66fa541aee73069d9324b863b7;p=thirdparty%2FPython%2Fcpython.git Issue #28665: Use macro form of PyCell_GET/SET --- diff --git a/Python/ceval.c b/Python/ceval.c index fe562a8450bf..eefe66f6cdb0 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: