On Fri, Sep 07 2018, Michael Mikonos <[email protected]> wrote:
> 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?

Looks pretty mechanical, ok jca@

>> - 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);
>

-- 
jca | PGP : 0x1524E7EE / 5135 92C1 AD36 5293 2BDF  DDCC 0DFA 74AE 1524 E7EE

Reply via email to