# HG changeset patch # User Bryan O'Sullivan # Date 1450118846 28800 # Node ID ec04370bdfaf923f22ed344670026b5d47b919d0 # Parent ad1cc1435b13ede3d59ccf6970d0fcf0315fe23b parsers: check results of PyInt_FromLong (issue4771) diff -r ad1cc1435b13 -r ec04370bdfaf mercurial/parsers.c --- a/mercurial/parsers.c Mon Dec 14 10:47:24 2015 -0800 +++ b/mercurial/parsers.c Mon Dec 14 10:47:26 2015 -0800 @@ -1333,16 +1333,23 @@ if (phaseslist == NULL) goto release; for (i = 0; i < len; i++) { + PyObject *phaseval; + phase = phases[i]; /* We only store the sets of phase for non public phase, the public phase * is computed as a difference */ if (phase != 0) { phaseset = PyList_GET_ITEM(phasessetlist, phase); rev = PyInt_FromLong(i); + if (rev == NULL) + goto release; PySet_Add(phaseset, rev); Py_XDECREF(rev); } - PyList_SET_ITEM(phaseslist, i, PyInt_FromLong(phase)); + phaseval = PyInt_FromLong(phase); + if (phaseval == NULL) + goto release; + PyList_SET_ITEM(phaseslist, i, phaseval); } ret = PyList_New(2); if (ret == NULL)