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