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