On Fri, Jul 11, 2014 at 04:55:36PM +0000, Doug Hogan wrote:
> 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 16:20:25 -0000
> @@ -818,8 +818,12 @@ dodiv(int n)
>               char fname[] = _PATH_DIVNAME;
>  
>               if ((fd = mkstemp(fname)) < 0 || 
> -                     (outfile[n] = fdopen(fd, "w+")) == NULL)
> -                             err(1, "%s: cannot divert", fname);
> +                     (outfile[n] = fdopen(fd, "w+")) == NULL) {
> +                             int saved_errno = errno;
> +                             if (fd != -1)
> +                                     unlink(fname);
> +                             errc(1, saved_errno, "%s: cannot divert", 
> fname);
> +             }
>               if (unlink(fname) == -1)
>                       err(1, "%s: cannot unlink", fname);
>       }
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.

Reply via email to