cext: stop worrying and love the free(NULL) stable
authorJosef 'Jeff' Sipek <jeffpc@josefsipek.net>
Wed, 13 Jun 2018 10:37:39 -0400
branchstable
changeset 38301 d9e87566f879
parent 38292 6cc5d01a58a6
child 38302 6caca2a7d37f
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.
mercurial/cext/bdiff.c
mercurial/cext/manifest.c
mercurial/cext/revlog.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);
 	}
--- 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);
 }