On Fri, Jul 11, 2014 at 07:29:06PM +0200, Marc Espie wrote: > I don't like that part. The logic is a bit wrong. Especially since > unlink(fname) is always called for fd != -1, so I feel there should be one > single call.
Ok Index: usr.bin/m4/eval.c =================================================================== RCS file: /cvs/src/usr.bin/m4/eval.c,v retrieving revision 1.72 diff -u -p -d -r1.72 eval.c --- usr.bin/m4/eval.c 28 Apr 2014 12:34:11 -0000 1.72 +++ usr.bin/m4/eval.c 11 Jul 2014 18:09:31 -0000 @@ -817,11 +817,10 @@ dodiv(int n) if (outfile[n] == NULL) { char fname[] = _PATH_DIVNAME; - if ((fd = mkstemp(fname)) < 0 || - (outfile[n] = fdopen(fd, "w+")) == NULL) - err(1, "%s: cannot divert", fname); - if (unlink(fname) == -1) - err(1, "%s: cannot unlink", fname); + if ((fd = mkstemp(fname)) < 0 || + unlink(fname) == -1 || + (outfile[n] = fdopen(fd, "w+")) == NULL) + err(1, "%s: cannot divert", fname); } active = outfile[n]; }