# HG changeset patch # User Josef 'Jeff' Sipek # Date 1528900659 14400 # Node ID d9e87566f879697b9ea8c8defbb5871a62f0e49f # Parent 6cc5d01a58a6485aa6b43f356f852f65e54d2a2d cext: stop worrying and love the free(NULL) There is no need to check for a NULL pointer before calling free since free(NULL) is defined by C standards as a no-op. Lots of software relies on this behavior so it is completely safe to call even on the most obscure of systems. diff -r 6cc5d01a58a6 -r d9e87566f879 mercurial/cext/bdiff.c --- a/mercurial/cext/bdiff.c Sun May 20 23:05:18 2018 -0400 +++ b/mercurial/cext/bdiff.c Wed Jun 13 10:37:39 2018 -0400 @@ -155,12 +155,8 @@ PyEval_RestoreThread(_save); PyBuffer_Release(&ba); PyBuffer_Release(&bb); - if (al) { - free(al); - } - if (bl) { - free(bl); - } + free(al); + free(bl); if (l.next) { bdiff_freehunks(l.next); } diff -r 6cc5d01a58a6 -r d9e87566f879 mercurial/cext/manifest.c --- a/mercurial/cext/manifest.c Sun May 20 23:05:18 2018 -0400 +++ b/mercurial/cext/manifest.c Wed Jun 13 10:37:39 2018 -0400 @@ -190,10 +190,8 @@ free(self->lines[i].start); } } - if (self->lines) { - free(self->lines); - self->lines = NULL; - } + free(self->lines); + self->lines = NULL; if (self->pydata) { Py_DECREF(self->pydata); self->pydata = NULL; diff -r 6cc5d01a58a6 -r d9e87566f879 mercurial/cext/revlog.c --- a/mercurial/cext/revlog.c Sun May 20 23:05:18 2018 -0400 +++ b/mercurial/cext/revlog.c Wed Jun 13 10:37:39 2018 -0400 @@ -319,10 +319,8 @@ PyMem_Free(self->offsets); self->offsets = NULL; } - if (self->nt) { - free(self->nt); - self->nt = NULL; - } + free(self->nt); + self->nt = NULL; Py_CLEAR(self->headrevs); }