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.
--- 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);
}
--- 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;
--- 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);
}