changeset: 105067:5f3b7ceb394c parent: 105065:c4394da344b7 user: Raymond Hettinger date: Sat Nov 12 04:10:35 2016 -0500 files: Python/ceval.c description: Issue #28665: Use macro form of PyCell_GET/SET diff -r c4394da344b7 -r 5f3b7ceb394c Python/ceval.c --- a/Python/ceval.c Fri Nov 11 15:58:03 2016 -0800 +++ b/Python/ceval.c Sat Nov 12 04:10:35 2016 -0500 @@ -2405,8 +2405,10 @@ 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 @@ 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: