ping.

On Thu, Aug 30, 2018 at 12:20:37AM +0800, Michael Mikonos wrote:
> Hello,
> 
> In csh(1) the function blkfree() behaves like free(3) and
> performs no action if its argument is NULL, so the caller
> can avoid checking.
> 
> I lightly tested the following patch on i386 and amd64.
> In two places the pointer was copied to a temporary
> variable (v) before being passed to blkfree() which seemed
> a bit awkward. Would anyone be willing to OK this?
> 
> - Michael
> 
> 
> Index: csh.c
> ===================================================================
> RCS file: /cvs/src/bin/csh/csh.c,v
> retrieving revision 1.43
> diff -u -p -u -r1.43 csh.c
> --- csh.c     16 Dec 2017 10:27:21 -0000      1.43
> +++ csh.c     29 Aug 2018 14:45:40 -0000
> @@ -885,7 +885,6 @@ pintr(int notused)
>  void
>  pintr1(bool wantnl)
>  {
> -    Char **v;
>      sigset_t sigset, osigset;
>  
>      sigemptyset(&sigset);
> @@ -914,10 +913,10 @@ pintr1(bool wantnl)
>      if (gointr) {
>       gotolab(gointr);
>       timflg = 0;
> -     if ((v = pargv) != NULL)
> -         pargv = 0, blkfree(v);
> -     if ((v = gargv) != NULL)
> -         gargv = 0, blkfree(v);
> +     blkfree(pargv);
> +     pargv = NULL;
> +     blkfree(gargv);
> +     gargv = NULL;
>       reset();
>      }
>      else if (intty && wantnl) {
> Index: dol.c
> ===================================================================
> RCS file: /cvs/src/bin/csh/dol.c,v
> retrieving revision 1.21
> diff -u -p -u -r1.21 dol.c
> --- dol.c     16 Dec 2017 10:27:21 -0000      1.21
> +++ dol.c     29 Aug 2018 14:45:40 -0000
> @@ -952,7 +952,7 @@ heredoc(Char *term)
>               ocnt = BUFSIZ;
>           }
>       }
> -     if (pargv)
> -         blkfree(pargv), pargv = 0;
> +     blkfree(pargv);
> +     pargv = NULL;
>      }
>  }
> Index: error.c
> ===================================================================
> RCS file: /cvs/src/bin/csh/error.c,v
> retrieving revision 1.13
> diff -u -p -u -r1.13 error.c
> --- error.c   16 Dec 2017 10:27:21 -0000      1.13
> +++ error.c   29 Aug 2018 14:45:40 -0000
> @@ -315,7 +315,6 @@ void
>  stderror(int id, ...)
>  {
>      va_list va;
> -    Char **v;
>      int     flags = id & ERR_FLAGS;
>  
>      id &= ~ERR_FLAGS;
> @@ -349,10 +348,10 @@ stderror(int id, ...)
>      free(seterr);
>      seterr = NULL;
>  
> -    if ((v = pargv) != NULL)
> -     pargv = 0, blkfree(v);
> -    if ((v = gargv) != NULL)
> -     gargv = 0, blkfree(v);
> +    blkfree(pargv);
> +    pargv = NULL;
> +    blkfree(gargv);
> +    gargv = NULL;
>  
>      (void) fflush(cshout);
>      (void) fflush(csherr);
> Index: func.c
> ===================================================================
> RCS file: /cvs/src/bin/csh/func.c,v
> retrieving revision 1.37
> diff -u -p -u -r1.37 func.c
> --- func.c    18 Dec 2017 19:12:24 -0000      1.37
> +++ func.c    29 Aug 2018 14:45:40 -0000
> @@ -822,8 +822,7 @@ wfree(void)
>           }
>       }
>  
> -     if (wp->w_fe0)
> -         blkfree(wp->w_fe0);
> +     blkfree(wp->w_fe0);
>       free(wp->w_fename);
>       free(wp);
>      }
> @@ -886,8 +885,8 @@ xecho(int sep, Char **v)
>       (void) fflush(cshout);
>      if (setintr)
>       sigprocmask(SIG_BLOCK, &sigset, NULL);
> -    if (gargv)
> -     blkfree(gargv), gargv = 0;
> +     blkfree(gargv);
> +     gargv = NULL;
>  }
>  
>  void
> @@ -1373,8 +1372,8 @@ doeval(Char **v, struct command *t)
>      SHIN = dmove(saveIN, oSHIN);
>      SHOUT = dmove(saveOUT, oSHOUT);
>      SHERR = dmove(saveERR, oSHERR);
> -    if (gv)
> -     blkfree(gv), gv = NULL;
> +    blkfree(gv);
> +    gv = NULL;
>      resexit(osetexit);
>      gv = savegv;
>      if (my_reenter)
> Index: glob.c
> ===================================================================
> RCS file: /cvs/src/bin/csh/glob.c,v
> retrieving revision 1.22
> diff -u -p -u -r1.22 glob.c
> --- glob.c    26 Dec 2015 13:48:38 -0000      1.22
> +++ glob.c    29 Aug 2018 14:45:40 -0000
> @@ -578,9 +578,7 @@ dobackp(Char *cp, bool literal)
>      Char *lp, *rp;
>      Char   *ep, word[PATH_MAX];
>  
> -    if (pargv) {
> -     blkfree(pargv);
> -    }
> +    blkfree(pargv);
>      pargsiz = GLOBSPACE;
>      pargv = xreallocarray(NULL, pargsiz, sizeof(Char *));
>      pargv[0] = NULL;
> Index: proc.c
> ===================================================================
> RCS file: /cvs/src/bin/csh/proc.c,v
> retrieving revision 1.31
> diff -u -p -u -r1.31 proc.c
> --- proc.c    22 Jul 2017 09:37:21 -0000      1.31
> +++ proc.c    29 Aug 2018 14:45:41 -0000
> @@ -1073,8 +1073,8 @@ pkill(Char **v, int signum)
>  cont:
>       v++;
>      }
> -    if (gargv)
> -     blkfree(gargv), gargv = 0;
> +    blkfree(gargv);
> +    gargv = NULL;
>      sigprocmask(SIG_UNBLOCK, &sigset, NULL);
>      if (err1)
>       stderror(ERR_SILENT);

Reply via email to