On Fri, Aug 01, 2014 at 08:03:58AM -0400, Ted Unangst wrote:
> Half true. :)
> 
> The behavior is intended. I don't really know why they care about
> freeing null, but the intention is clearly to check for it; otherwise
> they would just call free() in the first place. (actually, i think the
> rationale is that to assure portability, you need a strict version of
> free that matches the broken version found elsewhere or you will
> accidentally do something not portable. under that assumption, and
> assuming we don't care about those platforms, the correct fix is to
> delete xfree entirely.)
> 
> The X option, though, to malloc.conf doesn't check NULL to free. It
> just makes malloc abort instead of returning null. I don't think it's
> a useful option either way. Don't use it.

Based on Teds suggestion, this diff deletes xfree() entirely.

fritjof

Index: xmalloc.h
===================================================================
RCS file: /cvs/src/usr.bin/rcs/xmalloc.h,v
retrieving revision 1.1
diff -u -p -r1.1 xmalloc.h
--- xmalloc.h   26 Apr 2006 02:55:13 -0000      1.1
+++ xmalloc.h   2 Aug 2014 20:09:55 -0000
@@ -22,7 +22,6 @@
 void   *xmalloc(size_t);
 void   *xcalloc(size_t, size_t);
 void   *xrealloc(void *, size_t, size_t);
-void     xfree(void *);
 char   *xstrdup(const char *);
 int     xasprintf(char **, const char *, ...)
                 __attribute__((__format__ (printf, 2, 3)))
Index: xmalloc.c
===================================================================
RCS file: /cvs/src/usr.bin/rcs/xmalloc.c,v
retrieving revision 1.4
diff -u -p -r1.4 xmalloc.c
--- xmalloc.c   7 Jun 2009 08:39:13 -0000       1.4
+++ xmalloc.c   2 Aug 2014 20:10:08 -0000
@@ -73,14 +73,6 @@ xrealloc(void *ptr, size_t nmemb, size_t
        return new_ptr;
 }
 
-void
-xfree(void *ptr)
-{
-       if (ptr == NULL)
-               errx(1, "xfree: NULL pointer given as argument");
-       free(ptr);
-}
-
 char *
 xstrdup(const char *str)
 {
Index: ci.c
===================================================================
RCS file: /cvs/src/usr.bin/rcs/ci.c,v
retrieving revision 1.217
diff -u -p -r1.217 ci.c
--- ci.c        19 May 2014 19:42:24 -0000      1.217
+++ ci.c        2 Aug 2014 20:12:30 -0000
@@ -208,8 +208,7 @@ checkin_main(int argc, char **argv)
                        printf("%s\n", rcs_version);
                        exit(0);
                case 'w':
-                       if (pb.author != NULL)
-                               xfree(pb.author);
+                       free(pb.author);
                        pb.author = xstrdup(rcs_optarg);
                        break;
                case 'x':
@@ -376,10 +375,9 @@ out:
                buf_free(b2);
        if (b3 != NULL)
                buf_free(b3);
-       if (path1 != NULL)
-               xfree(path1);
-       if (path2 != NULL)
-               xfree(path2);
+               
+       free(path1);
+       free(path2);
 
        return (NULL);
 }
@@ -511,7 +509,7 @@ checkin_update(struct checkin_params *pb
                        fprintf(stderr,
                            "reuse log message of previous file? [yn](y): ");
                        if (rcs_yesno('y') != 'y') {
-                               xfree(pb->rcs_msg);
+                               free(pb->rcs_msg);
                                pb->rcs_msg = NULL;
                        }
                }
@@ -584,7 +582,7 @@ checkin_update(struct checkin_params *pb
                    pb->username, pb->author, NULL, NULL);
 
        if ((pb->flags & INTERACTIVE) && (pb->rcs_msg[0] == '\0')) {
-               xfree(pb->rcs_msg);     /* free empty log message */
+               free(pb->rcs_msg);      /* free empty log message */
                pb->rcs_msg = NULL;
        }
 
@@ -988,25 +986,22 @@ checkin_parsekeyword(char *keystring, RC
                (void)xasprintf(&datestring, "%s %s", tokens[3], tokens[4]);
                if ((*date = date_parse(datestring)) == -1)
                        errx(1, "could not parse date");
-               xfree(datestring);
+               free(datestring);
 
                if (i < 6)
                        break;
-               if (*author != NULL)
-                       xfree(*author);
+               free(*author);
                *author = xstrdup(tokens[5]);
 
                if (i < 7)
                        break;
-               if (*state != NULL)
-                       xfree(*state);
+               free(*state);
                *state = xstrdup(tokens[6]);
                break;
        case KW_TYPE_AUTHOR:
                if (i < 2)
                        break;
-               if (*author != NULL)
-                       xfree(*author);
+               free(*author);
                *author = xstrdup(tokens[1]);
                break;
        case KW_TYPE_DATE:
@@ -1015,13 +1010,12 @@ checkin_parsekeyword(char *keystring, RC
                (void)xasprintf(&datestring, "%s %s", tokens[1], tokens[2]);
                if ((*date = date_parse(datestring)) == -1)
                        errx(1, "could not parse date");
-               xfree(datestring);
+               free(datestring);
                break;
        case KW_TYPE_STATE:
                if (i < 2)
                        break;
-               if (*state != NULL)
-                       xfree(*state);
+               free(*state);
                *state = xstrdup(tokens[1]);
                break;
        case KW_TYPE_REVISION:
Index: co.c
===================================================================
RCS file: /cvs/src/usr.bin/rcs/co.c,v
retrieving revision 1.117
diff -u -p -r1.117 co.c
--- co.c        16 Apr 2013 20:24:45 -0000      1.117
+++ co.c        2 Aug 2014 20:14:42 -0000
@@ -556,7 +556,7 @@ checkout_file_has_diffs(RCSFILE *rfp, RC
 
        buf_free(bp);
        unlink(tempfile);
-       xfree(tempfile);
+       free(tempfile);
 
        return (ret);
 }
Index: date.y
===================================================================
RCS file: /cvs/src/usr.bin/rcs/date.y,v
retrieving revision 1.12
diff -u -p -r1.12 date.y
--- date.y      3 Dec 2013 00:21:49 -0000       1.12
+++ date.y      2 Aug 2014 20:16:14 -0000
@@ -494,7 +494,7 @@ yyerror(const char *s)
                    s, yyInput);
 
        warnx("%s", str);
-       xfree(str);
+       free(str);
        return (0);
 }
 
Index: diff.c
===================================================================
RCS file: /cvs/src/usr.bin/rcs/diff.c,v
retrieving revision 1.34
diff -u -p -r1.34 diff.c
--- diff.c      16 May 2013 12:44:48 -0000      1.34
+++ diff.c      2 Aug 2014 20:16:43 -0000
@@ -72,6 +72,7 @@
 #include <stdarg.h>
 #include <stddef.h>
 #include <stdio.h>
+#include <stdlib.h>
 #include <string.h>
 #include <unistd.h>
 
@@ -370,13 +371,13 @@ diffreg(const char *file1, const char *f
        clistlen = 100;
        clist = xcalloc(clistlen, sizeof(*clist));
        i = stone(class, slen[0], member, klist, flags);
-       xfree(member);
-       xfree(class);
+       free(member);
+       free(class);
 
        J = xrealloc(J, len[0] + 2, sizeof(*J));
        unravel(klist[i]);
-       xfree(clist);
-       xfree(klist);
+       free(clist);
+       free(klist);
 
        ixold = xrealloc(ixold, len[0] + 2, sizeof(*ixold));
        ixnew = xrealloc(ixnew, len[1] + 2, sizeof(*ixnew));
@@ -765,7 +766,7 @@ unsort(struct line *f, int l, int *b)
                a[f[i].serial] = f[i].value;
        for (i = 1; i <= l; i++)
                b[i] = a[i];
-       xfree(a);
+       free(a);
 }
 
 static int
@@ -856,7 +857,7 @@ ignoreline(char *line)
        int ret;
 
        ret = regexec(diff_ignore_re, line, 0, NULL, 0);
-       xfree(line);
+       free(line);
        return (ret == 0);      /* if it matched, it should be ignored. */
 }
 
@@ -1379,5 +1380,5 @@ diff_output(const char *fmt, ...)
                buf_append(diffbuf, str, strlen(str));
        else
                printf("%s", str);
-       xfree(str);
+       free(str);
 }
Index: diff3.c
===================================================================
RCS file: /cvs/src/usr.bin/rcs/diff3.c,v
retrieving revision 1.33
diff -u -p -r1.33 diff3.c
--- diff3.c     4 Mar 2012 04:05:15 -0000       1.33
+++ diff3.c     2 Aug 2014 20:16:52 -0000
@@ -249,20 +249,13 @@ out:
        (void)unlink(dp13);
        (void)unlink(dp23);
 
-       if (path1 != NULL)
-               xfree(path1);
-       if (path2 != NULL)
-               xfree(path2);
-       if (path3 != NULL)
-               xfree(path3);
-       if (dp13 != NULL)
-               xfree(dp13);
-       if (dp23 != NULL)
-               xfree(dp23);
-       if (data != NULL)
-               xfree(data);
-       if (patch != NULL)
-               xfree(patch);
+       free(path1);
+       free(path2);
+       free(path3);
+       free(dp13);
+       free(dp23);
+       free(data);
+       free(patch);
 
        return (diffb);
 }
@@ -376,20 +369,13 @@ out:
        (void)unlink(dp13);
        (void)unlink(dp23);
 
-       if (path1 != NULL)
-               xfree(path1);
-       if (path2 != NULL)
-               xfree(path2);
-       if (path3 != NULL)
-               xfree(path3);
-       if (dp13 != NULL)
-               xfree(dp13);
-       if (dp23 != NULL)
-               xfree(dp23);
-       if (data != NULL)
-               xfree(data);
-       if (patch != NULL)
-               xfree(patch);
+       free(path1);
+       free(path2);
+       free(path3);
+       free(dp13);
+       free(dp23);
+       free(data);
+       free(patch);
 
        return (diffb);
 }
Index: rcs.c
===================================================================
RCS file: /cvs/src/usr.bin/rcs/rcs.c,v
retrieving revision 1.80
diff -u -p -r1.80 rcs.c
--- rcs.c       7 Jan 2014 14:08:16 -0000       1.80
+++ rcs.c       2 Aug 2014 20:18:29 -0000
@@ -154,24 +154,24 @@ rcs_close(RCSFILE *rfp)
        while (!TAILQ_EMPTY(&(rfp->rf_access))) {
                rap = TAILQ_FIRST(&(rfp->rf_access));
                TAILQ_REMOVE(&(rfp->rf_access), rap, ra_list);
-               xfree(rap->ra_name);
-               xfree(rap);
+               free(rap->ra_name);
+               free(rap);
        }
 
        while (!TAILQ_EMPTY(&(rfp->rf_symbols))) {
                rsp = TAILQ_FIRST(&(rfp->rf_symbols));
                TAILQ_REMOVE(&(rfp->rf_symbols), rsp, rs_list);
                rcsnum_free(rsp->rs_num);
-               xfree(rsp->rs_name);
-               xfree(rsp);
+               free(rsp->rs_name);
+               free(rsp);
        }
 
        while (!TAILQ_EMPTY(&(rfp->rf_locks))) {
                rlp = TAILQ_FIRST(&(rfp->rf_locks));
                TAILQ_REMOVE(&(rfp->rf_locks), rlp, rl_list);
                rcsnum_free(rlp->rl_num);
-               xfree(rlp->rl_name);
-               xfree(rlp);
+               free(rlp->rl_name);
+               free(rlp);
        }
 
        if (rfp->rf_head != NULL)
@@ -181,17 +181,15 @@ rcs_close(RCSFILE *rfp)
 
        if (rfp->rf_file != NULL)
                fclose(rfp->rf_file);
-       if (rfp->rf_path != NULL)
-               xfree(rfp->rf_path);
-       if (rfp->rf_comment != NULL)
-               xfree(rfp->rf_comment);
-       if (rfp->rf_expand != NULL)
-               xfree(rfp->rf_expand);
-       if (rfp->rf_desc != NULL)
-               xfree(rfp->rf_desc);
+       
+       free(rfp->rf_path);
+       free(rfp->rf_comment);
+       free(rfp->rf_expand);
+       free(rfp->rf_desc);
+       
        if (rfp->rf_pdata != NULL)
                rcsparse_free(rfp);
-       xfree(rfp);
+       free(rfp);
 }
 
 /*
@@ -347,8 +345,7 @@ rcs_write(RCSFILE *rfp)
 
        rfp->rf_flags |= RCS_SYNCED;
 
-       if (fn != NULL)
-               xfree(fn);
+       free(fn);
 }
 
 /*
@@ -418,7 +415,7 @@ rcs_movefile(char *from, char *to, mode_
 out:
        (void)fclose(src);
        (void)fclose(dst);
-       xfree(buf);
+       free(buf);
 
        return (0);
 }
@@ -507,8 +504,8 @@ rcs_access_remove(RCSFILE *file, const c
        }
 
        TAILQ_REMOVE(&(file->rf_access), ap, ra_list);
-       xfree(ap->ra_name);
-       xfree(ap);
+       free(ap->ra_name);
+       free(ap);
 
        /* not synced anymore */
        file->rf_flags &= ~RCS_SYNCED;
@@ -580,9 +577,9 @@ rcs_sym_remove(RCSFILE *file, const char
        }
 
        TAILQ_REMOVE(&(file->rf_symbols), symp, rs_list);
-       xfree(symp->rs_name);
+       free(symp->rs_name);
        rcsnum_free(symp->rs_num);
-       xfree(symp);
+       free(symp);
 
        /* not synced anymore */
        file->rf_flags &= ~RCS_SYNCED;
@@ -741,8 +738,8 @@ rcs_lock_remove(RCSFILE *file, const cha
 
        TAILQ_REMOVE(&(file->rf_locks), lkp, rl_list);
        rcsnum_free(lkp->rl_num);
-       xfree(lkp->rl_name);
-       xfree(lkp);
+       free(lkp->rl_name);
+       free(lkp);
 
        /* not synced anymore */
        file->rf_flags &= ~RCS_SYNCED;
@@ -760,8 +757,7 @@ rcs_desc_set(RCSFILE *file, const char *
        char *tmp;
 
        tmp = xstrdup(desc);
-       if (file->rf_desc != NULL)
-               xfree(file->rf_desc);
+       free(file->rf_desc);
        file->rf_desc = tmp;
        file->rf_flags &= ~RCS_SYNCED;
 }
@@ -777,8 +773,7 @@ rcs_comment_set(RCSFILE *file, const cha
        char *tmp;
 
        tmp = xstrdup(comment);
-       if (file->rf_comment != NULL)
-               xfree(file->rf_comment);
+       free(file->rf_comment);
        file->rf_comment = tmp;
        file->rf_flags &= ~RCS_SYNCED;
 }
@@ -837,7 +832,7 @@ rcs_patch_lines(struct rcs_lines *dlines
                        for (i = 0; (i < nbln) && (dlp != NULL); i++) {
                                ndlp = TAILQ_NEXT(dlp, l_list);
                                TAILQ_REMOVE(&(dlines->l_lines), dlp, l_list);
-                               xfree(dlp);
+                               free(dlp);
                                dlp = ndlp;
                                /* last line is gone - reset dlp */
                                if (dlp == NULL) {
@@ -1018,7 +1013,7 @@ rcs_getrev(RCSFILE *rfp, RCSNUM *frev)
                                return (NULL);
 
                rbuf = rcs_patchfile(data, dlen, patch, plen, rcs_patch_lines);
-               xfree(data);
+               free(data);
 
                if (rbuf == NULL)
                        break;
@@ -1244,10 +1239,8 @@ rcs_rev_remove(RCSFILE *rf, RCSNUM *rev)
 
        rcs_freedelta(rdp);
 
-       if (path_tmp1 != NULL)
-               xfree(path_tmp1);
-       if (path_tmp2 != NULL)
-               xfree(path_tmp2);
+       free(path_tmp1);
+       free(path_tmp2);
 
        return (0);
 }
@@ -1341,8 +1334,7 @@ rcs_kwexp_set(RCSFILE *file, int mode)
        }
 
        tmp = xstrdup(buf);
-       if (file->rf_expand != NULL)
-               xfree(file->rf_expand);
+       free(file->rf_expand);
        file->rf_expand = tmp;
        /* not synced anymore */
        file->rf_flags &= ~RCS_SYNCED;
@@ -1417,24 +1409,19 @@ rcs_freedelta(struct rcs_delta *rdp)
        if (rdp->rd_next != NULL)
                rcsnum_free(rdp->rd_next);
 
-       if (rdp->rd_author != NULL)
-               xfree(rdp->rd_author);
-       if (rdp->rd_locker != NULL)
-               xfree(rdp->rd_locker);
-       if (rdp->rd_state != NULL)
-               xfree(rdp->rd_state);
-       if (rdp->rd_log != NULL)
-               xfree(rdp->rd_log);
-       if (rdp->rd_text != NULL)
-               xfree(rdp->rd_text);
+       free(rdp->rd_author);
+       free(rdp->rd_locker);
+       free(rdp->rd_state);
+       free(rdp->rd_log);
+       free(rdp->rd_text);
 
        while ((rb = TAILQ_FIRST(&(rdp->rd_branches))) != NULL) {
                TAILQ_REMOVE(&(rdp->rd_branches), rb, rb_list);
                rcsnum_free(rb->rb_num);
-               xfree(rb);
+               free(rb);
        }
 
-       xfree(rdp);
+       free(rdp);
 }
 
 /*
@@ -1699,8 +1686,7 @@ rcs_deltatext_set(RCSFILE *rfp, RCSNUM *
        if ((rdp = rcs_findrev(rfp, rev)) == NULL)
                return (-1);
 
-       if (rdp->rd_text != NULL)
-               xfree(rdp->rd_text);
+       free(rdp->rd_text);
 
        len = buf_len(bp);
        dtext = buf_release(bp);
@@ -1715,8 +1701,7 @@ rcs_deltatext_set(RCSFILE *rfp, RCSNUM *
                rdp->rd_tlen = 0;
        }
 
-       if (dtext != NULL)
-               xfree(dtext);
+       free(dtext);
 
        return (0);
 }
@@ -1734,8 +1719,7 @@ rcs_rev_setlog(RCSFILE *rfp, RCSNUM *rev
        if ((rdp = rcs_findrev(rfp, rev)) == NULL)
                return (-1);
 
-       if (rdp->rd_log != NULL)
-               xfree(rdp->rd_log);
+       free(rdp->rd_log);
 
        rdp->rd_log = xstrdup(logtext);
        rfp->rf_flags &= ~RCS_SYNCED;
@@ -1774,8 +1758,7 @@ rcs_state_set(RCSFILE *rfp, RCSNUM *rev,
        if ((rdp = rcs_findrev(rfp, rev)) == NULL)
                return (-1);
 
-       if (rdp->rd_state != NULL)
-               xfree(rdp->rd_state);
+       free(rdp->rd_state);
 
        rdp->rd_state = xstrdup(state);
 
Index: rcsdiff.c
===================================================================
RCS file: /cvs/src/usr.bin/rcs/rcsdiff.c,v
retrieving revision 1.79
diff -u -p -r1.79 rcsdiff.c
--- rcsdiff.c   16 Apr 2013 20:24:45 -0000      1.79
+++ rcsdiff.c   2 Aug 2014 20:19:29 -0000
@@ -359,10 +359,9 @@ out:
                buf_free(b1);
        if (b2 != NULL)
                buf_free(b2);
-       if (path1 != NULL)
-               xfree(path1);
-       if (path2 != NULL)
-               xfree(path2);
+       
+       free(path1);
+       free(path2);
 
        return (ret);
 }
@@ -438,10 +437,9 @@ out:
                buf_free(b1);
        if (b2 != NULL)
                buf_free(b2);
-       if (path1 != NULL)
-               xfree(path1);
-       if (path2 != NULL)
-               xfree(path2);
+               
+       free(path1);
+       free(path2);
 
        return (ret);
 }
Index: rcsnum.c
===================================================================
RCS file: /cvs/src/usr.bin/rcs/rcsnum.c,v
retrieving revision 1.14
diff -u -p -r1.14 rcsnum.c
--- rcsnum.c    7 Jan 2014 14:08:16 -0000       1.14
+++ rcsnum.c    2 Aug 2014 20:20:03 -0000
@@ -28,6 +28,7 @@
 
 #include <ctype.h>
 #include <err.h>
+#include <stdlib.h>
 #include <string.h>
 
 #include "rcs.h"
@@ -103,9 +104,8 @@ rcsnum_parse(const char *str)
 void
 rcsnum_free(RCSNUM *rn)
 {
-       if (rn->rn_id != NULL)
-               xfree(rn->rn_id);
-       xfree(rn);
+       free(rn->rn_id);
+       free(rn);
 }
 
 /*
@@ -330,7 +330,7 @@ rcsnum_aton(const char *str, char **ep, 
 
 rcsnum_aton_failed:
        nump->rn_len = 0;
-       xfree(nump->rn_id);
+       free(nump->rn_id);
        nump->rn_id = NULL;
        return (-1);
 }
Index: rcsparse.c
===================================================================
RCS file: /cvs/src/usr.bin/rcs/rcsparse.c,v
retrieving revision 1.9
diff -u -p -r1.9 rcsparse.c
--- rcsparse.c  3 Jun 2013 17:04:35 -0000       1.9
+++ rcsparse.c  2 Aug 2014 20:20:13 -0000
@@ -340,11 +340,10 @@ rcsparse_free(RCSFILE *rfp)
 
        pdp = rfp->rf_pdata;
 
-       if (pdp->rp_buf != NULL)
-               xfree(pdp->rp_buf);
+       free(pdp->rp_buf);
        if (pdp->rp_token == RCS_TYPE_REVISION)
                rcsnum_free(pdp->rp_value.rev);
-       xfree(pdp);
+       free(pdp);
 }
 
 /*
@@ -609,7 +608,7 @@ rcsparse_text(RCSFILE *rfp, struct rcs_p
                memcpy(pdp->rp_delta->rd_text, pdp->rp_buf,
                    pdp->rp_delta->rd_tlen);
        }
-       xfree(pdp->rp_value.str);
+       free(pdp->rp_value.str);
 
        return (0);
 }
@@ -707,7 +706,7 @@ rcsparse_symbols(RCSFILE *rfp, struct rc
                name = pdp->rp_value.str;
                if (rcsparse_token(rfp, RCS_TOK_COLON) != RCS_TOK_COLON ||
                    rcsparse_token(rfp, RCS_TYPE_NUMBER) != RCS_TYPE_NUMBER) {
-                       xfree(name);
+                       free(name);
                        return (1);
                }
                symp = xmalloc(sizeof(*symp));
@@ -741,7 +740,7 @@ rcsparse_locks(RCSFILE *rfp, struct rcs_
                if (rcsparse_token(rfp, RCS_TOK_COLON) != RCS_TOK_COLON ||
                    rcsparse_token(rfp, RCS_TYPE_REVISION) !=
                    RCS_TYPE_REVISION) {
-                       xfree(name);
+                       free(name);
                        return (1);
                }
                lkp = xmalloc(sizeof(*lkp));
Index: rcsprog.c
===================================================================
RCS file: /cvs/src/usr.bin/rcs/rcsprog.c,v
retrieving revision 1.151
diff -u -p -r1.151 rcsprog.c
--- rcsprog.c   12 Jul 2011 21:00:32 -0000      1.151
+++ rcsprog.c   2 Aug 2014 20:21:03 -0000
@@ -239,8 +239,7 @@ rcs_main(int argc, char **argv)
                        rcsflags |= RCSPROG_LFLAG;
                        break;
                case 'm':
-                       if (logstr != NULL)
-                               xfree(logstr);
+                       free(logstr);
                        logstr = xstrdup(rcs_optarg);
                        break;
                case 'M':
@@ -415,8 +414,8 @@ rcs_main(int argc, char **argv)
                        while (!TAILQ_EMPTY(&(file->rf_access))) {
                                rap = TAILQ_FIRST(&(file->rf_access));
                                TAILQ_REMOVE(&(file->rf_access), rap, ra_list);
-                               xfree(rap->ra_name);
-                               xfree(rap);
+                               free(rap->ra_name);
+                               free(rap);
                        }
                        /* not synced anymore */
                        file->rf_flags &= ~RCS_SYNCED;
Index: rcsutil.c
===================================================================
RCS file: /cvs/src/usr.bin/rcs/rcsutil.c,v
retrieving revision 1.40
diff -u -p -r1.40 rcsutil.c
--- rcsutil.c   29 May 2014 16:39:42 -0000      1.40
+++ rcsutil.c   2 Aug 2014 20:21:40 -0000
@@ -34,6 +34,7 @@
 #include <err.h>
 #include <fcntl.h>
 #include <stdio.h>
+#include <stdlib.h>
 #include <string.h>
 #include <unistd.h>
 
@@ -230,7 +231,7 @@ rcs_choosefile(const char *filename, cha
                                if (strlcpy(out, rcspath, len) >= len)
                                        errx(1, "rcs_choosefile; truncation");
 
-                               xfree(suffixes);
+                               free(suffixes);
                                return (fd);
                        }
 
@@ -255,7 +256,7 @@ rcs_choosefile(const char *filename, cha
                if (strlcpy(out, fpath, len) >= len)
                        errx(1, "rcs_choosefile: truncation");
 
-               xfree(suffixes);
+               free(suffixes);
                return (fd);
        }
 
@@ -266,7 +267,7 @@ rcs_choosefile(const char *filename, cha
        if (strlcat(rcspath, suffixes, sizeof(rcspath)) >= sizeof(rcspath))
                errx(1, "rcs_choosefile: truncation");
 
-       xfree(suffixes);
+       free(suffixes);
 
        if (strlcpy(out, rcspath, len) >= len)
                errx(1, "rcs_choosefile: truncation");
@@ -425,10 +426,8 @@ rcs_rev_select(RCSFILE *file, const char
        }
        rcs_argv_destroy(revargv);
 
-       if (lnum.rn_id != NULL)
-               xfree(lnum.rn_id);
-       if (rnum.rn_id != NULL)
-               xfree(rnum.rn_id);
+       free(lnum.rn_id);
+       free(rnum.rn_id);
 
        return (nrev);
 }
@@ -464,7 +463,7 @@ rcs_set_description(RCSFILE *file, const
                content = rcs_prompt(prompt);
 
        rcs_desc_set(file, content);
-       xfree(content);
+       free(content);
        return (0);
 }
 
@@ -510,10 +509,10 @@ rcs_freelines(struct rcs_lines *lines)
 
        while ((lp = TAILQ_FIRST(&(lines->l_lines))) != NULL) {
                TAILQ_REMOVE(&(lines->l_lines), lp, l_list);
-               xfree(lp);
+               free(lp);
        }
 
-       xfree(lines);
+       free(lines);
 }
 
 BUF *
@@ -610,9 +609,9 @@ rcs_strsplit(const char *str, const char
 void
 rcs_argv_destroy(struct rcs_argvector *av)
 {
-       xfree(av->str);
-       xfree(av->argv);
-       xfree(av);
+       free(av->str);
+       free(av->argv);
+       free(av);
 }
 
 /*
@@ -631,6 +630,6 @@ rcs_strip_suffix(char *filename)
                                break;
                        }
                }
-               xfree(suffixes);
+               free(suffixes);
        }
 }
Index: worklist.c
===================================================================
RCS file: /cvs/src/usr.bin/rcs/worklist.c,v
retrieving revision 1.3
diff -u -p -r1.3 worklist.c
--- worklist.c  23 Jul 2010 08:31:19 -0000      1.3
+++ worklist.c  2 Aug 2014 20:22:36 -0000
@@ -28,6 +28,7 @@
 
 #include <err.h>
 #include <signal.h>
+#include <stdlib.h>
 #include <string.h>
 #include <unistd.h>
 
@@ -73,7 +74,7 @@ worklist_run(struct wklhead *list, void 
 
        while ((wkl = SLIST_FIRST(list)) != NULL) {
                SLIST_REMOVE_HEAD(list, wkl_list);
-               xfree(wkl);
+               free(wkl);
        }
 
        sigprocmask(SIG_SETMASK, &old, NULL);
Index: buf.c
===================================================================
RCS file: /cvs/src/usr.bin/rcs/buf.c,v
retrieving revision 1.22
diff -u -p -r1.22 buf.c
--- buf.c       6 Jul 2011 15:36:52 -0000       1.22
+++ buf.c       2 Aug 2014 20:29:23 -0000
@@ -31,6 +31,7 @@
 #include <errno.h>
 #include <fcntl.h>
 #include <stdio.h>
+#include <stdlib.h>
 #include <string.h>
 #include <unistd.h>
 
@@ -136,15 +137,14 @@ out:
 void
 buf_free(BUF *b)
 {
-       if (b->cb_buf != NULL)
-               xfree(b->cb_buf);
-       xfree(b);
+       free(b->cb_buf);
+       free(b);
 }
 
 /*
  * Free the buffer <b>'s structural information but do not free the contents
  * of the buffer.  Instead, they are returned and should be freed later using
- * xfree().
+ * free().
  */
 void *
 buf_release(BUF *b)
@@ -152,7 +152,7 @@ buf_release(BUF *b)
        void *tmp;
 
        tmp = b->cb_buf;
-       xfree(b);
+       free(b);
        return (tmp);
 }
 

Reply via email to