Hi,

Remove some checks for NULL around free() in vi.
vi still sees to work when I build it on i386 and amd64.

- Michael


Index: cl/cl_screen.c
===================================================================
RCS file: /cvs/src/usr.bin/vi/cl/cl_screen.c,v
retrieving revision 1.27
diff -u -p -u -r1.27 cl_screen.c
--- cl/cl_screen.c      28 May 2016 18:30:35 -0000      1.27
+++ cl/cl_screen.c      16 Apr 2017 13:06:45 -0000
@@ -434,14 +434,10 @@ cl_ex_init(SCR *sp)
 
        /* Enter_standout_mode and exit_standout_mode are paired. */
        if (clp->smso == NULL || clp->rmso == NULL) {
-               if (clp->smso != NULL) {
-                       free(clp->smso);
-                       clp->smso = NULL;
-               }
-               if (clp->rmso != NULL) {
-                       free(clp->rmso);
-                       clp->rmso = NULL;
-               }
+               free(clp->smso);
+               clp->smso = NULL;
+               free(clp->rmso);
+               clp->rmso = NULL;
        }
 
        /*
@@ -515,26 +511,16 @@ cl_getcap(SCR *sp, char *name, char **el
 static void
 cl_freecap(CL_PRIVATE *clp)
 {
-       if (clp->el != NULL) {
-               free(clp->el);
-               clp->el = NULL;
-       }
-       if (clp->cup != NULL) {
-               free(clp->cup);
-               clp->cup = NULL;
-       }
-       if (clp->cuu1 != NULL) {
-               free(clp->cuu1);
-               clp->cuu1 = NULL;
-       }
-       if (clp->rmso != NULL) {
-               free(clp->rmso);
-               clp->rmso = NULL;
-       }
-       if (clp->smso != NULL) {
-               free(clp->smso);
-               clp->smso = NULL;
-       }
+       free(clp->el);
+       clp->el = NULL;
+       free(clp->cup);
+       clp->cup = NULL;
+       free(clp->cuu1);
+       clp->cuu1 = NULL;
+       free(clp->rmso);
+       clp->rmso = NULL;
+       free(clp->smso);
+       clp->smso = NULL;
 }
 
 /*
Index: common/cut.c
===================================================================
RCS file: /cvs/src/usr.bin/vi/common/cut.c,v
retrieving revision 1.16
diff -u -p -u -r1.16 cut.c
--- common/cut.c        27 May 2016 09:18:11 -0000      1.16
+++ common/cut.c        16 Apr 2017 13:06:45 -0000
@@ -343,7 +343,6 @@ text_lfree(TEXTH *headp)
 void
 text_free(TEXT *tp)
 {
-       if (tp->lb != NULL)
-               free(tp->lb);
+       free(tp->lb);
        free(tp);
 }
Index: common/exf.c
===================================================================
RCS file: /cvs/src/usr.bin/vi/common/exf.c,v
retrieving revision 1.44
diff -u -p -u -r1.44 exf.c
--- common/exf.c        1 Aug 2016 18:27:35 -0000       1.44
+++ common/exf.c        16 Apr 2017 13:06:46 -0000
@@ -76,8 +76,7 @@ file_add(SCR *sp, CHAR_T *name)
                TAILQ_FOREACH_SAFE(frp, &gp->frefq, q, tfrp) {
                        if (frp->name == NULL) {
                                TAILQ_REMOVE(&gp->frefq, frp, q);
-                               if (frp->name != NULL)
-                                       free(frp->name);
+                               free(frp->name);
                                free(frp);
                                continue;
                        }
@@ -197,8 +196,7 @@ file_init(SCR *sp, FREF *frp, char *rcv_
                        F_SET(frp, FR_TMPFILE);
                if ((frp->tname = strdup(tname)) == NULL ||
                    (frp->name == NULL && (frp->name = strdup(tname)) == NULL)) 
{
-                       if (frp->tname != NULL)
-                               free(frp->tname);
+                       free(frp->tname);
                        msgq(sp, M_SYSERR, NULL);
                        (void)unlink(tname);
                        goto err;
@@ -410,10 +408,9 @@ file_init(SCR *sp, FREF *frp, char *rcv_
 
        return (0);
 
-err:   if (frp->name != NULL) {
-               free(frp->name);
-               frp->name = NULL;
-       }
+err:
+       free(frp->name);
+       frp->name = NULL;
        if (frp->tname != NULL) {
                (void)unlink(frp->tname);
                free(frp->tname);
@@ -422,10 +419,8 @@ err:       if (frp->name != NULL) {
 
 oerr:  if (F_ISSET(ep, F_RCV_ON))
                (void)unlink(ep->rcv_path);
-       if (ep->rcv_path != NULL) {
-               free(ep->rcv_path);
-               ep->rcv_path = NULL;
-       }
+       free(ep->rcv_path);
+       ep->rcv_path = NULL;
        if (ep->db != NULL)
                (void)ep->db->close(ep->db);
        free(ep);
@@ -659,8 +654,7 @@ file_end(SCR *sp, EXF *ep, int force)
                frp->tname = NULL;
                if (F_ISSET(frp, FR_TMPFILE)) {
                        TAILQ_REMOVE(&sp->gp->frefq, frp, q);
-                       if (frp->name != NULL)
-                               free(frp->name);
+                       free(frp->name);
                        free(frp);
                }
                sp->frp = NULL;
@@ -704,11 +698,8 @@ file_end(SCR *sp, EXF *ep, int force)
                (void)close(ep->fcntl_fd);
        if (ep->rcv_fd != -1)
                (void)close(ep->rcv_fd);
-       if (ep->rcv_path != NULL)
-               free(ep->rcv_path);
-       if (ep->rcv_mpath != NULL)
-               free(ep->rcv_mpath);
-
+       free(ep->rcv_path);
+       free(ep->rcv_mpath);
        free(ep);
        return (0);
 }
@@ -1358,8 +1349,7 @@ file_aw(SCR *sp, int flags)
 void
 set_alt_name(SCR *sp, char *name)
 {
-       if (sp->alt_name != NULL)
-               free(sp->alt_name);
+       free(sp->alt_name);
        if (name == NULL)
                sp->alt_name = NULL;
        else if ((sp->alt_name = strdup(name)) == NULL)
Index: common/key.c
===================================================================
RCS file: /cvs/src/usr.bin/vi/common/key.c,v
retrieving revision 1.18
diff -u -p -u -r1.18 key.c
--- common/key.c        27 May 2016 09:18:11 -0000      1.18
+++ common/key.c        16 Apr 2017 13:06:46 -0000
@@ -770,8 +770,7 @@ v_event_err(SCR *sp, EVENT *evp)
        }
 
        /* Free any allocated memory. */
-       if (evp->e_asp != NULL)
-               free(evp->e_asp);
+       free(evp->e_asp);
 }
 
 /*
Index: common/log.c
===================================================================
RCS file: /cvs/src/usr.bin/vi/common/log.c,v
retrieving revision 1.11
diff -u -p -u -r1.11 log.c
--- common/log.c        20 Jan 2017 00:55:52 -0000      1.11
+++ common/log.c        16 Apr 2017 13:06:46 -0000
@@ -124,10 +124,8 @@ log_end(SCR *sp, EXF *ep)
                (void)(ep->log->close)(ep->log);
                ep->log = NULL;
        }
-       if (ep->l_lp != NULL) {
-               free(ep->l_lp);
-               ep->l_lp = NULL;
-       }
+       free(ep->l_lp);
+       ep->l_lp = NULL;
        ep->l_len = 0;
        ep->l_cursor.lno = 1;           /* XXX Any valid recno. */
        ep->l_cursor.cno = 0;
Index: common/main.c
===================================================================
RCS file: /cvs/src/usr.bin/vi/common/main.c,v
retrieving revision 1.38
diff -u -p -u -r1.38 main.c
--- common/main.c       27 May 2016 09:18:11 -0000      1.38
+++ common/main.c       16 Apr 2017 13:06:47 -0000
@@ -470,17 +470,14 @@ v_end(GS *gp)
                /* Free FREF's. */
                while ((frp = TAILQ_FIRST(&gp->frefq))) {
                        TAILQ_REMOVE(&gp->frefq, frp, q);
-                       if (frp->name != NULL)
-                               free(frp->name);
-                       if (frp->tname != NULL)
-                               free(frp->tname);
+                       free(frp->name);
+                       free(frp->tname);
                        free(frp);
                }
        }
 
        /* Free key input queue. */
-       if (gp->i_event != NULL)
-               free(gp->i_event);
+       free(gp->i_event);
 
        /* Free cut buffers. */
        cut_close(gp);
@@ -514,8 +511,7 @@ v_end(GS *gp)
 
 #if defined(DEBUG) || defined(PURIFY)
        /* Free any temporary space. */
-       if (gp->tmp_bp != NULL)
-               free(gp->tmp_bp);
+       free(gp->tmp_bp);
 
 #if defined(DEBUG)
        /* Close debugging file descriptor. */
Index: common/options.c
===================================================================
RCS file: /cvs/src/usr.bin/vi/common/options.c,v
retrieving revision 1.22
diff -u -p -u -r1.22 options.c
--- common/options.c    1 Aug 2016 18:27:35 -0000       1.22
+++ common/options.c    16 Apr 2017 13:06:47 -0000
@@ -1129,9 +1129,7 @@ opts_free(SCR *sp)
                if (optlist[cnt].type != OPT_STR ||
                    F_ISSET(&optlist[cnt], OPT_GLOBAL))
                        continue;
-               if (O_STR(sp, cnt) != NULL)
-                       free(O_STR(sp, cnt));
-               if (O_D_STR(sp, cnt) != NULL)
-                       free(O_D_STR(sp, cnt));
+               free(O_STR(sp, cnt));
+               free(O_D_STR(sp, cnt));
        }
 }
Index: common/screen.c
===================================================================
RCS file: /cvs/src/usr.bin/vi/common/screen.c,v
retrieving revision 1.13
diff -u -p -u -r1.13 screen.c
--- common/screen.c     7 Dec 2015 20:39:19 -0000       1.13
+++ common/screen.c     16 Apr 2017 13:06:47 -0000
@@ -176,22 +176,17 @@ screen_end(SCR *sp)
                text_lfree(&sp->tiq);
 
        /* Free alternate file name. */
-       if (sp->alt_name != NULL)
-               free(sp->alt_name);
+       free(sp->alt_name);
 
        /* Free up search information. */
-       if (sp->re != NULL)
-               free(sp->re);
+       free(sp->re);
        if (F_ISSET(sp, SC_RE_SEARCH))
                regfree(&sp->re_c);
-       if (sp->subre != NULL)
-               free(sp->subre);
+       free(sp->subre);
        if (F_ISSET(sp, SC_RE_SUBST))
                regfree(&sp->subre_c);
-       if (sp->repl != NULL)
-               free(sp->repl);
-       if (sp->newl != NULL)
-               free(sp->newl);
+       free(sp->repl);
+       free(sp->newl);
 
        /* Free all the options */
        opts_free(sp);
Index: common/seq.c
===================================================================
RCS file: /cvs/src/usr.bin/vi/common/seq.c,v
retrieving revision 1.13
diff -u -p -u -r1.13 seq.c
--- common/seq.c        27 May 2016 09:18:11 -0000      1.13
+++ common/seq.c        16 Apr 2017 13:06:47 -0000
@@ -58,8 +58,7 @@ seq_set(SCR *sp, CHAR_T *name, size_t nl
                        sv_errno = errno;
                        goto mem1;
                }
-               if (qp->output != NULL)
-                       free(qp->output);
+               free(qp->output);
                qp->olen = olen;
                qp->output = p;
                return (0);
@@ -95,8 +94,7 @@ seq_set(SCR *sp, CHAR_T *name, size_t nl
        } else if ((qp->output = v_strdup(sp, output, olen)) == NULL) {
                sv_errno = errno;
                free(qp->input);
-mem3:          if (qp->name != NULL)
-                       free(qp->name);
+mem3:          free(qp->name);
 mem2:          free(qp);
 mem1:          errno = sv_errno;
                msgq(sp, M_SYSERR, NULL);
@@ -148,11 +146,9 @@ int
 seq_mdel(SEQ *qp)
 {
        LIST_REMOVE(qp, q);
-       if (qp->name != NULL)
-               free(qp->name);
+       free(qp->name);
        free(qp->input);
-       if (qp->output != NULL)
-               free(qp->output);
+       free(qp->output);
        free(qp);
        return (0);
 }
@@ -250,12 +246,9 @@ seq_close(GS *gp)
        SEQ *qp;
 
        while ((qp = LIST_FIRST(&gp->seqq)) != NULL) {
-               if (qp->name != NULL)
-                       free(qp->name);
-               if (qp->input != NULL)
-                       free(qp->input);
-               if (qp->output != NULL)
-                       free(qp->output);
+               free(qp->name);
+               free(qp->input);
+               free(qp->output);
                LIST_REMOVE(qp, q);
                free(qp);
        }
Index: ex/ex_bang.c
===================================================================
RCS file: /cvs/src/usr.bin/vi/ex/ex_bang.c,v
retrieving revision 1.10
diff -u -p -u -r1.10 ex_bang.c
--- ex/ex_bang.c        6 Jan 2016 22:29:38 -0000       1.10
+++ ex/ex_bang.c        16 Apr 2017 13:06:47 -0000
@@ -63,8 +63,7 @@ ex_bang(SCR *sp, EXCMD *cmdp)
 
        /* Set the "last bang command" remembered value. */
        exp = EXP(sp);
-       if (exp->lastbcomm != NULL)
-               free(exp->lastbcomm);
+       free(exp->lastbcomm);
        if ((exp->lastbcomm = strdup(ap->bp)) == NULL) {
                msgq(sp, M_SYSERR, NULL);
                return (1);
Index: ex/ex_init.c
===================================================================
RCS file: /cvs/src/usr.bin/vi/ex/ex_init.c,v
retrieving revision 1.17
diff -u -p -u -r1.17 ex_init.c
--- ex/ex_init.c        6 Jan 2016 22:28:52 -0000       1.17
+++ ex/ex_init.c        16 Apr 2017 13:06:47 -0000
@@ -90,11 +90,8 @@ ex_screen_end(SCR *sp)
        if (argv_free(sp))
                rval = 1;
 
-       if (exp->ibp != NULL)
-               free(exp->ibp);
-
-       if (exp->lastbcomm != NULL)
-               free(exp->lastbcomm);
+       free(exp->ibp);
+       free(exp->lastbcomm);
 
        if (ex_tag_free(sp))
                rval = 1;
Index: ex/ex_read.c
===================================================================
RCS file: /cvs/src/usr.bin/vi/ex/ex_read.c,v
retrieving revision 1.13
diff -u -p -u -r1.13 ex_read.c
--- ex/ex_read.c        27 May 2016 09:18:12 -0000      1.13
+++ ex/ex_read.c        16 Apr 2017 13:06:47 -0000
@@ -111,8 +111,7 @@ ex_read(SCR *sp, EXCMD *cmdp)
 
                /* Set the last bang command. */
                exp = EXP(sp);
-               if (exp->lastbcomm != NULL)
-                       free(exp->lastbcomm);
+               free(exp->lastbcomm);
                if ((exp->lastbcomm =
                    strdup(cmdp->argv[argc]->bp)) == NULL) {
                        msgq(sp, M_SYSERR, NULL);
Index: ex/ex_script.c
===================================================================
RCS file: /cvs/src/usr.bin/vi/ex/ex_script.c,v
retrieving revision 1.26
diff -u -p -u -r1.26 ex_script.c
--- ex/ex_script.c      27 May 2016 09:18:12 -0000      1.26
+++ ex/ex_script.c      16 Apr 2017 13:06:47 -0000
@@ -569,8 +569,7 @@ sscr_setprompt(SCR *sp, char *buf, size_
        SCRIPT *sc;
 
        sc = sp->script;
-       if (sc->sh_prompt)
-               free(sc->sh_prompt);
+       free(sc->sh_prompt);
        MALLOC(sp, sc->sh_prompt, len + 1);
        if (sc->sh_prompt == NULL) {
                sscr_end(sp);
Index: ex/ex_subst.c
===================================================================
RCS file: /cvs/src/usr.bin/vi/ex/ex_subst.c,v
retrieving revision 1.29
diff -u -p -u -r1.29 ex_subst.c
--- ex/ex_subst.c       2 Sep 2016 15:38:42 -0000       1.29
+++ ex/ex_subst.c       16 Apr 2017 13:06:48 -0000
@@ -187,8 +187,7 @@ subagain:   return (ex_subagain(sp, cmdp))
        if (p[0] == '\0' || p[0] == delim) {
                if (p[0] == delim)
                        ++p;
-               if (sp->repl != NULL)
-                       free(sp->repl);
+               free(sp->repl);
                sp->repl = NULL;
                sp->repl_len = 0;
        } else if (p[0] == '%' && (p[1] == '\0' || p[1] == delim))
@@ -227,8 +226,7 @@ tilde:                              ++p;
                        ++len;
                }
                if ((sp->repl_len = len) != 0) {
-                       if (sp->repl != NULL)
-                               free(sp->repl);
+                       free(sp->repl);
                        if ((sp->repl = malloc(len)) == NULL) {
                                msgq(sp, M_SYSERR, NULL);
                                FREE_SPACE(sp, bp, blen);
@@ -857,8 +855,7 @@ err:                rval = 1;
 
        if (bp != NULL)
                FREE_SPACE(sp, bp, blen);
-       if (lb != NULL)
-               free(lb);
+       free(lb);
        return (rval);
 }
 
@@ -917,10 +914,8 @@ re_compile(SCR *sp, char *ptrn, size_t p
                                return (1);
 
                /* Discard previous pattern. */
-               if (*ptrnp != NULL) {
-                       free(*ptrnp);
-                       *ptrnp = NULL;
-               }
+               free(*ptrnp);
+               *ptrnp = NULL;
                if (lenp != NULL)
                        *lenp = plen;
 
Index: ex/ex_tag.c
===================================================================
RCS file: /cvs/src/usr.bin/vi/ex/ex_tag.c,v
retrieving revision 1.24
diff -u -p -u -r1.24 ex_tag.c
--- ex/ex_tag.c 6 Jan 2016 22:28:52 -0000       1.24
+++ ex/ex_tag.c 16 Apr 2017 13:06:48 -0000
@@ -102,8 +102,7 @@ ex_tag_push(SCR *sp, EXCMD *cmdp)
        exp = EXP(sp);
        switch (cmdp->argc) {
        case 1:
-               if (exp->tag_last != NULL)
-                       free(exp->tag_last);
+               free(exp->tag_last);
 
                if ((exp->tag_last = strdup(cmdp->argv[0]->bp)) == NULL) {
                        msgq(sp, M_SYSERR, NULL);
@@ -208,10 +207,8 @@ ex_tag_push(SCR *sp, EXCMD *cmdp)
 
 err:
 alloc_err:
-       if (rtqp != NULL)
-               free(rtqp);
-       if (rtp != NULL)
-               free(rtp);
+       free(rtqp);
+       free(rtp);
        tagq_free(sp, tqp);
        return (1);
 }
@@ -861,8 +858,7 @@ ex_tag_free(SCR *sp)
                tagq_free(sp, tqp);     /* tagq_free removes tqp from queue. */
        while ((tfp = TAILQ_FIRST(&exp->tagfq)) != NULL)
                tagf_free(sp, tfp);
-       if (exp->tag_last != NULL)
-               free(exp->tag_last);
+       free(exp->tag_last);
        return (0);
 }
 
Index: vi/v_init.c
===================================================================
RCS file: /cvs/src/usr.bin/vi/vi/v_init.c,v
retrieving revision 1.7
diff -u -p -u -r1.7 v_init.c
--- vi/v_init.c 7 Dec 2015 20:39:19 -0000       1.7
+++ vi/v_init.c 16 Apr 2017 13:06:48 -0000
@@ -81,16 +81,10 @@ v_screen_end(SCR *sp)
 
        if ((vip = VIP(sp)) == NULL)
                return (0);
-       if (vip->keyw != NULL)
-               free(vip->keyw);
-       if (vip->rep != NULL)
-               free(vip->rep);
-       if (vip->ps != NULL)
-               free(vip->ps);
-
-       if (HMAP != NULL)
-               free(HMAP);
-
+       free(vip->keyw);
+       free(vip->rep);
+       free(vip->ps);
+       free(HMAP);
        free(vip);
        sp->vi_private = NULL;
 
Index: vi/v_paragraph.c
===================================================================
RCS file: /cvs/src/usr.bin/vi/vi/v_paragraph.c,v
retrieving revision 1.8
diff -u -p -u -r1.8 v_paragraph.c
--- vi/v_paragraph.c    7 Dec 2015 20:39:19 -0000       1.8
+++ vi/v_paragraph.c    16 Apr 2017 13:06:48 -0000
@@ -326,8 +326,7 @@ v_buildps(SCR *sp, char *p_p, char *s_p)
        MALLOC_RET(sp, p, p_len + s_len + 1);
 
        vip = VIP(sp);
-       if (vip->ps != NULL)
-               free(vip->ps);
+       free(vip->ps);
 
        if (p_p != NULL)
                memmove(p, p_p, p_len + 1);
Index: vi/vi.c
===================================================================
RCS file: /cvs/src/usr.bin/vi/vi/vi.c,v
retrieving revision 1.20
diff -u -p -u -r1.20 vi.c
--- vi/vi.c     27 May 2016 09:18:12 -0000      1.20
+++ vi/vi.c     16 Apr 2017 13:06:49 -0000
@@ -1001,10 +1001,8 @@ v_dtoh(SCR *sp)
        hidden = 0;
        gp = sp->gp;
        while ((tsp = TAILQ_FIRST(&gp->dq))) {
-               if (_HMAP(tsp) != NULL) {
-                       free(_HMAP(tsp));
-                       _HMAP(tsp) = NULL;
-               }
+               free(_HMAP(tsp));
+               _HMAP(tsp) = NULL;
                TAILQ_REMOVE(&gp->dq, tsp, q);
                TAILQ_INSERT_TAIL(&gp->hq, tsp, q);
                ++hidden;
Index: vi/vs_msg.c
===================================================================
RCS file: /cvs/src/usr.bin/vi/vi/vs_msg.c,v
retrieving revision 1.19
diff -u -p -u -r1.19 vs_msg.c
--- vi/vs_msg.c 18 Dec 2016 06:11:23 -0000      1.19
+++ vi/vs_msg.c 16 Apr 2017 13:06:49 -0000
@@ -899,7 +899,6 @@ vs_msgsave(SCR *sp, mtype_t mt, char *p,
        return;
 
 alloc_err:
-       if (mp_n != NULL)
-               free(mp_n);
+       free(mp_n);
        (void)fprintf(stderr, "%.*s\n", (int)len, p);
 }

Reply via email to