On Thu, Oct 29, 2015 at 10:54:09AM +0000, Nicholas Marriott wrote: > Hi > > You missed ci.c:316 and a few in rcs.c and rcsdiff.c
Sorry. Here is new diff. Hopefully I haven't missed anything else. 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 30 Oct 2015 01:11:28 -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 30 Oct 2015 01:11:28 -0000 @@ -313,8 +313,7 @@ checkin_main(int argc, char **argv) } rcs_close(pb.file); - if (rev_str != NULL) - rcsnum_free(pb.newrev); + rcsnum_free(pb.newrev); pb.newrev = NULL; } @@ -369,12 +368,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 30 Oct 2015 01:11:28 -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 30 Oct 2015 01:11:28 -0000 @@ -156,8 +156,7 @@ ident_line(FILE *fp) found++; out: - if (bp != NULL) - buf_free(bp); + buf_free(bp); } __dead void Index: rcs.c =================================================================== RCS file: /cvs/src/usr.bin/rcs/rcs.c,v retrieving revision 1.83 diff -u -p -u -r1.83 rcs.c --- rcs.c 13 Jun 2015 20:15:21 -0000 1.83 +++ rcs.c 30 Oct 2015 01:11:28 -0000 @@ -177,10 +177,8 @@ rcs_close(RCSFILE *rfp) free(rlp); } - if (rfp->rf_head != NULL) - rcsnum_free(rfp->rf_head); - if (rfp->rf_branch != NULL) - rcsnum_free(rfp->rf_branch); + rcsnum_free(rfp->rf_head); + rcsnum_free(rfp->rf_branch); if (rfp->rf_file != NULL) fclose(rfp->rf_file); @@ -1406,10 +1404,8 @@ rcs_freedelta(struct rcs_delta *rdp) { struct rcs_branch *rb; - if (rdp->rd_num != NULL) - rcsnum_free(rdp->rd_num); - if (rdp->rd_next != NULL) - rcsnum_free(rdp->rd_next); + rcsnum_free(rdp->rd_num); + rcsnum_free(rdp->rd_next); free(rdp->rd_author); free(rdp->rd_locker); 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 30 Oct 2015 01:11:28 -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 30 Oct 2015 01:11:28 -0000 @@ -250,15 +250,9 @@ rcsdiff_main(int argc, char **argv) status = rcsdiff_rev(file, rev1, rev2, dflags); rcs_close(file); - - if (rev1 != NULL) { - rcsnum_free(rev1); - rev1 = NULL; - } - if (rev2 != NULL) { - rcsnum_free(rev2); - rev2 = NULL; - } + rcsnum_free(rev1); + rcsnum_free(rev2); + rev1 = rev2 = NULL; } return (status); @@ -354,10 +348,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 +423,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 30 Oct 2015 01:11:28 -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 30 Oct 2015 01:11:28 -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); }