Hi tech@,
In case it's considered useful...
Submitting patch to shave a few lines from rcs(1) by allowing
buf_free() and rcsnum_free() to ignore NULL pointer.
- Michael
Index: buf.c
===================================================================
RCS file: /cvs/src/usr.bin/rcs/buf.c,v
retrieving revision 1.25
diff -u -p -u -r1.25 buf.c
--- buf.c 13 Jun 2015 20:15:21 -0000 1.25
+++ buf.c 29 Oct 2015 09:06:01 -0000
@@ -138,6 +138,8 @@ out:
void
buf_free(BUF *b)
{
+ if (b == NULL)
+ return;
free(b->cb_buf);
free(b);
}
Index: ci.c
===================================================================
RCS file: /cvs/src/usr.bin/rcs/ci.c,v
retrieving revision 1.222
diff -u -p -u -r1.222 ci.c
--- ci.c 5 Sep 2015 09:38:23 -0000 1.222
+++ ci.c 29 Oct 2015 09:06:01 -0000
@@ -369,12 +369,9 @@ checkin_diff_file(struct checkin_params
return (b3);
out:
- if (b1 != NULL)
- buf_free(b1);
- if (b2 != NULL)
- buf_free(b2);
- if (b3 != NULL)
- buf_free(b3);
+ buf_free(b1);
+ buf_free(b2);
+ buf_free(b3);
free(path1);
free(path2);
Index: diff3.c
===================================================================
RCS file: /cvs/src/usr.bin/rcs/diff3.c,v
retrieving revision 1.37
diff -u -p -u -r1.37 diff3.c
--- diff3.c 5 Sep 2015 09:47:08 -0000 1.37
+++ diff3.c 29 Oct 2015 09:06:01 -0000
@@ -234,14 +234,10 @@ merge_diff3(char **av, int flags)
warnx("warning: overlaps or other problems during merge");
out:
- if (b2 != NULL)
- buf_free(b2);
- if (b3 != NULL)
- buf_free(b3);
- if (d1 != NULL)
- buf_free(d1);
- if (d2 != NULL)
- buf_free(d2);
+ buf_free(b2);
+ buf_free(b3);
+ buf_free(d1);
+ buf_free(d2);
(void)unlink(path1);
(void)unlink(path2);
@@ -354,14 +350,10 @@ rcs_diff3(RCSFILE *rf, char *workfile, R
warnx("warning: overlaps or other problems during merge");
out:
- if (b2 != NULL)
- buf_free(b2);
- if (b3 != NULL)
- buf_free(b3);
- if (d1 != NULL)
- buf_free(d1);
- if (d2 != NULL)
- buf_free(d2);
+ buf_free(b2);
+ buf_free(b3);
+ buf_free(d1);
+ buf_free(d2);
(void)unlink(path1);
(void)unlink(path2);
Index: ident.c
===================================================================
RCS file: /cvs/src/usr.bin/rcs/ident.c,v
retrieving revision 1.30
diff -u -p -u -r1.30 ident.c
--- ident.c 2 Oct 2014 06:23:15 -0000 1.30
+++ ident.c 29 Oct 2015 09:06:01 -0000
@@ -156,8 +156,7 @@ ident_line(FILE *fp)
found++;
out:
- if (bp != NULL)
- buf_free(bp);
+ buf_free(bp);
}
__dead void
Index: rcsclean.c
===================================================================
RCS file: /cvs/src/usr.bin/rcs/rcsclean.c,v
retrieving revision 1.54
diff -u -p -u -r1.54 rcsclean.c
--- rcsclean.c 16 Jan 2015 06:40:11 -0000 1.54
+++ rcsclean.c 29 Oct 2015 09:06:01 -0000
@@ -209,10 +209,8 @@ rcsclean_file(char *fname, const char *r
rcs_set_mtime(file, rcs_mtime);
out:
- if (b1 != NULL)
- buf_free(b1);
- if (b2 != NULL)
- buf_free(b2);
+ buf_free(b1);
+ buf_free(b2);
if (file != NULL)
rcs_close(file);
}
Index: rcsdiff.c
===================================================================
RCS file: /cvs/src/usr.bin/rcs/rcsdiff.c,v
retrieving revision 1.83
diff -u -p -u -r1.83 rcsdiff.c
--- rcsdiff.c 13 Jun 2015 20:15:21 -0000 1.83
+++ rcsdiff.c 29 Oct 2015 09:06:01 -0000
@@ -354,10 +354,8 @@ rcsdiff_file(RCSFILE *file, RCSNUM *rev,
out:
if (fd != -1)
(void)close(fd);
- if (b1 != NULL)
- buf_free(b1);
- if (b2 != NULL)
- buf_free(b2);
+ buf_free(b1);
+ buf_free(b2);
free(path1);
free(path2);
@@ -431,10 +429,8 @@ rcsdiff_rev(RCSFILE *file, RCSNUM *rev1,
ret = diffreg(path1, path2, NULL, dflags);
out:
- if (b1 != NULL)
- buf_free(b1);
- if (b2 != NULL)
- buf_free(b2);
+ buf_free(b1);
+ buf_free(b2);
free(path1);
free(path2);
Index: rcsmerge.c
===================================================================
RCS file: /cvs/src/usr.bin/rcs/rcsmerge.c,v
retrieving revision 1.55
diff -u -p -u -r1.55 rcsmerge.c
--- rcsmerge.c 16 Jan 2015 06:40:11 -0000 1.55
+++ rcsmerge.c 29 Oct 2015 09:06:01 -0000
@@ -173,12 +173,8 @@ rcsmerge_main(int argc, char **argv)
out:
rcs_close(file);
-
- if (rev1 != NULL)
- rcsnum_free(rev1);
- if (rev2 != NULL)
- rcsnum_free(rev2);
-
+ rcsnum_free(rev1);
+ rcsnum_free(rev2);
return (status);
}
Index: rcsnum.c
===================================================================
RCS file: /cvs/src/usr.bin/rcs/rcsnum.c,v
retrieving revision 1.17
diff -u -p -u -r1.17 rcsnum.c
--- rcsnum.c 13 Jun 2015 20:15:21 -0000 1.17
+++ rcsnum.c 29 Oct 2015 09:06:01 -0000
@@ -105,6 +105,8 @@ rcsnum_parse(const char *str)
void
rcsnum_free(RCSNUM *rn)
{
+ if (rn == NULL)
+ return;
free(rn->rn_id);
free(rn);
}