python/dist/src/Objects enumobject.c, 1.17, 1.18 genobject.c, 1.3, 1.4 iterobject.c, 1.18, 1.19
Update of /cvsroot/python/python/dist/src/Objects In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv13289/Objects Modified Files: enumobject.c genobject.c iterobject.c Log Message: SF patch #1020188: Use Py_CLEAR where necessary to avoid crashes (Contributed by Dima Dorfman) Index: enumobject.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Objects/enumobject.c,v retrieving revision 1.17 retrieving revision 1.18 diff -u -d -r1.17 -r1.18 --- enumobject.c 25 Aug 2004 19:42:12 -0000 1.17 +++ enumobject.c 1 Sep 2004 07:02:44 -0000 1.18 @@ -230,10 +230,7 @@ PyErr_Clear(); } ro->index = -1; - if (ro->seq != NULL) { - Py_DECREF(ro->seq); - ro->seq = NULL; - } + Py_CLEAR(ro->seq); return NULL; } Index: genobject.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Objects/genobject.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- genobject.c 27 Jun 2004 15:43:12 -0000 1.3 +++ genobject.c 1 Sep 2004 07:02:44 -0000 1.4 @@ -51,8 +51,7 @@ * may keep a chain of frames alive or it could create a reference * cycle. */ assert(f->f_back != NULL); - Py_DECREF(f->f_back); - f->f_back = NULL; + Py_CLEAR(f->f_back); /* If the generator just returned (as opposed to yielding), signal * that the generator is exhausted. */ Index: iterobject.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Objects/iterobject.c,v retrieving revision 1.18 retrieving revision 1.19 diff -u -d -r1.18 -r1.19 --- iterobject.c 12 Apr 2004 18:10:01 -0000 1.18 +++ iterobject.c 1 Sep 2004 07:02:44 -0000 1.19 @@ -192,18 +192,14 @@ return result; /* Common case, fast path */ Py_DECREF(result); if (ok > 0) { - Py_DECREF(it->it_callable); - it->it_callable = NULL; - Py_DECREF(it->it_sentinel); - it->it_sentinel = NULL; + Py_CLEAR(it->it_callable); + Py_CLEAR(it->it_sentinel); } } else if (PyErr_ExceptionMatches(PyExc_StopIteration)) { PyErr_Clear(); - Py_DECREF(it->it_callable); - it->it_callable = NULL; - Py_DECREF(it->it_sentinel); - it->it_sentinel = NULL; + Py_CLEAR(it->it_callable); + Py_CLEAR(it->it_sentinel); } } return NULL;
participants (1)
-
rhettingerīŧ users.sourceforge.net