Patchwork [1,of,2] cext: stop worrying and love the free(NULL)

login
register
mail settings
Submitter Josef 'Jeff' Sipek
Date June 13, 2018, 2:55 p.m.
Message ID <cbb47a946bc0e0346bfc.1528901711@meili>
Download mbox | patch
Permalink /patch/32118/
State Accepted
Headers show

Comments

Josef 'Jeff' Sipek - June 13, 2018, 2:55 p.m.
# HG changeset patch
# User Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
# Date 1528900659 14400
#      Wed Jun 13 10:37:39 2018 -0400
# Branch stable
# Node ID cbb47a946bc0e0346bfc9f9ba505f9475de43606
# Parent  3c84493556db3bffcff2fa2f24bb6738dde9fc58
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.

Patch

diff --git a/mercurial/cext/bdiff.c b/mercurial/cext/bdiff.c
--- a/mercurial/cext/bdiff.c
+++ b/mercurial/cext/bdiff.c
@@ -155,12 +155,8 @@  cleanup:
 		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 --git a/mercurial/cext/manifest.c b/mercurial/cext/manifest.c
--- a/mercurial/cext/manifest.c
+++ b/mercurial/cext/manifest.c
@@ -190,10 +190,8 @@  static void lazymanifest_dealloc(lazyman
 			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 --git a/mercurial/cext/revlog.c b/mercurial/cext/revlog.c
--- a/mercurial/cext/revlog.c
+++ b/mercurial/cext/revlog.c
@@ -319,10 +319,8 @@  static void _index_clearcaches(indexObje
 		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);
 }