> I'd say go for the x* solution,
> 
>       -Otto

Sure. When I looked at this again there are also realloc() return
value checks missing, so I added xcalloc(), xmalloc() and xrealloc().
An old (unused) function yy_flex_xmalloc() gets removed. When building
this I checked the resulting .o files using nm(1) to make sure I didn't
miss any direct calls to calloc/malloc/realloc. However, scan.o and
parse.o were left alone. Does this look better?


Index: flexdef.h
===================================================================
RCS file: /cvs/src/usr.bin/lex/flexdef.h,v
retrieving revision 1.15
diff -u -r1.15 flexdef.h
--- flexdef.h   19 Nov 2015 23:48:06 -0000      1.15
+++ flexdef.h   28 Aug 2019 13:23:15 -0000
@@ -920,8 +920,9 @@
 /* Output a yy_trans_info structure. */
 extern void transition_struct_out PROTO ((int, int));
 
-/* Only needed when using certain broken versions of bison to build parse.c. */
-extern void *yy_flex_xmalloc PROTO ((int));
+extern void *xmalloc PROTO ((size_t));
+extern void *xcalloc PROTO ((size_t, size_t));
+extern void *xrealloc PROTO ((void *, size_t));
 
 /* from file nfa.c */
 
Index: buf.c
===================================================================
RCS file: /cvs/src/usr.bin/lex/buf.c,v
retrieving revision 1.7
diff -u -r1.7 buf.c
--- buf.c       20 Nov 2015 18:54:49 -0000      1.7
+++ buf.c       28 Aug 2019 13:23:15 -0000
@@ -79,9 +79,7 @@
        size_t tsz;
 
        tsz = strlen(fmt) + strlen(s) + 1;
-       t = malloc(tsz);
-       if (!t)
-               flexfatal(_("Allocation of buffer to print string failed"));
+       t = xmalloc(tsz);
        snprintf(t, tsz, fmt, s);
        buf = buf_strappend(buf, t);
        free(t);
@@ -105,9 +103,7 @@
            2 * strlen(filename) +      /* filename with possibly all 
backslashes escaped */
            (int) (1 + log10(abs(lineno))) +    /* line number */
            1;                  /* NUL */
-       t = malloc(tsz);
-       if (!t)
-               flexfatal(_("Allocation of buffer for line directive failed"));
+       t = xmalloc(tsz);
        dst = t + snprintf(t, tsz, "#line %d \"", lineno);
        for (src = filename; *src; *dst++ = *src++)
                if (*src == '\\')       /* escape backslashes */
@@ -181,10 +177,7 @@
 
        val = val ? val : "";
        strsz = strlen(fmt) + strlen(def) + strlen(val) + 2;
-       str = malloc(strsz);
-       if (!str)
-               flexfatal(_("Allocation of buffer for m4 def failed"));
-
+       str = xmalloc(strsz);
        snprintf(str, strsz, fmt, def, val);
        buf_append(buf, &str, 1);
        return buf;
@@ -203,10 +196,7 @@
        size_t strsz;
 
        strsz = strlen(fmt) + strlen(def) + 2;
-       str = malloc(strsz);
-       if (!str)
-               flexfatal(_("Allocation of buffer for m4 undef failed"));
-
+       str = xmalloc(strsz);
        snprintf(str, strsz, fmt, def);
        buf_append(buf, &str, 1);
        return buf;
Index: dfa.c
===================================================================
RCS file: /cvs/src/usr.bin/lex/dfa.c,v
retrieving revision 1.8
diff -u -r1.8 dfa.c
--- dfa.c       19 Nov 2015 23:20:34 -0000      1.8
+++ dfa.c       28 Aug 2019 13:23:15 -0000
@@ -523,15 +523,12 @@
                 * So we'll have to realloc() on the way...
                 * we'll wait until we can calculate yynxt_tbl->td_hilen.
                 */
-               yynxt_tbl =
-                       (struct yytbl_data *) calloc (1,
-                                                     sizeof (struct
-                                                             yytbl_data));
+               yynxt_tbl = xcalloc(1, sizeof(struct yytbl_data));
                yytbl_data_init (yynxt_tbl, YYTD_ID_NXT);
                yynxt_tbl->td_hilen = 1;
                yynxt_tbl->td_lolen = num_full_table_rows;
                yynxt_tbl->td_data = yynxt_data =
-                       (flex_int32_t *) calloc (yynxt_tbl->td_lolen *
+                       xcalloc(yynxt_tbl->td_lolen *
                                            yynxt_tbl->td_hilen,
                                            sizeof (flex_int32_t));
                yynxt_curr = 0;
@@ -715,7 +712,7 @@
                        /* Each time we hit here, it's another td_hilen, so we 
realloc. */
                        yynxt_tbl->td_hilen++;
                        yynxt_tbl->td_data = yynxt_data =
-                               (flex_int32_t *) realloc (yynxt_data,
+                               xrealloc(yynxt_data,
                                                     yynxt_tbl->td_hilen *
                                                     yynxt_tbl->td_lolen *
                                                     sizeof (flex_int32_t));
Index: filter.c
===================================================================
RCS file: /cvs/src/usr.bin/lex/filter.c,v
retrieving revision 1.9
diff -u -r1.9 filter.c
--- filter.c    30 Aug 2017 02:54:07 -0000      1.9
+++ filter.c    28 Aug 2019 13:23:15 -0000
@@ -50,9 +50,7 @@
        va_list ap;
 
        /* allocate and initialize new filter */
-       f = calloc(sizeof(struct filter), 1);
-       if (!f)
-               flexerror(_("calloc failed (f) in filter_create_ext"));
+       f = xcalloc(sizeof(struct filter), 1);
        f->filter_func = NULL;
        f->extra = NULL;
        f->next = NULL;
@@ -66,16 +64,14 @@
        }
        /* allocate argv, and populate it with the argument list. */
        max_args = 8;
-       f->argv = malloc(sizeof(char *) * (max_args + 1));
-       if (!f->argv)
-               flexerror(_("malloc failed (f->argv) in filter_create_ext"));
+       f->argv = xmalloc(sizeof(char *) * (max_args + 1));
        f->argv[f->argc++] = cmd;
 
        va_start(ap, cmd);
        while ((s = va_arg(ap, const char *)) != NULL) {
                if (f->argc >= max_args) {
                        max_args += 8;
-                       f->argv = realloc(f->argv,
+                       f->argv = xrealloc(f->argv,
                            sizeof(char *) * (max_args + 1));
                }
                f->argv[f->argc++] = s;
@@ -102,9 +98,7 @@
        struct filter *f;
 
        /* allocate and initialize new filter */
-       f = calloc(sizeof(struct filter), 1);
-       if (!f)
-               flexerror(_("calloc failed in filter_create_int"));
+       f = xcalloc(sizeof(struct filter), 1);
        f->next = NULL;
        f->argc = 0;
        f->argv = NULL;
@@ -285,9 +279,7 @@
        fprintf(to_c, "m4_define( [[M4_YY_OUTFILE_NAME]],[[%s]])m4_dnl\n",
            outfilename ? outfilename : "<stdout>");
 
-       buf = malloc(readsz);
-       if (!buf)
-               flexerror(_("malloc failed in filter_tee_header"));
+       buf = xmalloc(readsz);
        while (fgets(buf, readsz, stdin)) {
                fputs(buf, to_c);
                if (write_header)
@@ -349,9 +341,7 @@
        if (!chain)
                return 0;
 
-       buf = malloc(readsz);
-       if (!buf)
-               flexerror(_("malloc failed in filter_fix_linedirs"));
+       buf = xmalloc(readsz);
 
        while (fgets(buf, readsz, stdin)) {
 
Index: gen.c
===================================================================
RCS file: /cvs/src/usr.bin/lex/gen.c,v
retrieving revision 1.15
diff -u -r1.15 gen.c
--- gen.c       19 Nov 2015 23:28:03 -0000      1.15
+++ gen.c       28 Aug 2019 13:23:16 -0000
@@ -111,12 +111,12 @@
        flex_int8_t *tdata = NULL;
        struct yytbl_data *tbl;
 
-       tbl = calloc(1, sizeof(struct yytbl_data));
+       tbl = xcalloc(1, sizeof(struct yytbl_data));
        yytbl_data_init(tbl, YYTD_ID_RULE_CAN_MATCH_EOL);
        tbl->td_flags = YYTD_DATA8;
        tbl->td_lolen = num_rules + 1;
        tbl->td_data = tdata =
-           calloc(tbl->td_lolen, sizeof(flex_int8_t));
+           xcalloc(tbl->td_lolen, sizeof(flex_int8_t));
 
        for (i = 1; i <= num_rules; i++)
                tdata[i] = rule_has_nl[i] ? 1 : 0;
@@ -223,14 +223,14 @@
            ((tblend + numecs + 1) >= INT16_MAX
                || long_align) ? "flex_int32_t" : "flex_int16_t");
 
-       tbl = calloc(1, sizeof(struct yytbl_data));
+       tbl = xcalloc(1, sizeof(struct yytbl_data));
        yytbl_data_init(tbl, YYTD_ID_TRANSITION);
        tbl->td_flags = YYTD_DATA32 | YYTD_STRUCT;
        tbl->td_hilen = 0;
        tbl->td_lolen = tblend + numecs + 1;    /* number of structs */
 
        tbl->td_data = tdata =
-           calloc(tbl->td_lolen * 2, sizeof(flex_int32_t));
+           xcalloc(tbl->td_lolen * 2, sizeof(flex_int32_t));
 
        /*
         * We want the transition to be represented as the offset to the next
@@ -318,14 +318,14 @@
        flex_int32_t *tdata = NULL;
        flex_int32_t i;
 
-       tbl = calloc(1, sizeof(struct yytbl_data));
+       tbl = xcalloc(1, sizeof(struct yytbl_data));
        yytbl_data_init(tbl, YYTD_ID_START_STATE_LIST);
        tbl->td_flags = YYTD_DATA32 | YYTD_PTRANS;
        tbl->td_hilen = 0;
        tbl->td_lolen = lastsc * 2 + 1;
 
        tbl->td_data = tdata =
-           calloc(tbl->td_lolen, sizeof(flex_int32_t));
+           xcalloc(tbl->td_lolen, sizeof(flex_int32_t));
 
        for (i = 0; i <= lastsc * 2; ++i)
                tdata[i] = base[i];
@@ -452,14 +452,14 @@
        struct yytbl_data *tbl = NULL;
        flex_int32_t *tdata = NULL;
 
-       tbl = calloc(1, sizeof(struct yytbl_data));
+       tbl = xcalloc(1, sizeof(struct yytbl_data));
        yytbl_data_init(tbl, YYTD_ID_EC);
        tbl->td_flags |= YYTD_DATA32;
        tbl->td_hilen = 0;
        tbl->td_lolen = csize;
 
        tbl->td_data = tdata =
-           calloc(tbl->td_lolen, sizeof(flex_int32_t));
+           xcalloc(tbl->td_lolen, sizeof(flex_int32_t));
 
        for (i = 1; i < csize; ++i) {
                ecgroup[i] = ABS(ecgroup[i]);
@@ -659,14 +659,14 @@
        struct yytbl_data *tbl;
        flex_int32_t *tdata = NULL;
 
-       tbl = calloc(1, sizeof(struct yytbl_data));
+       tbl = xcalloc(1, sizeof(struct yytbl_data));
        yytbl_data_init(tbl, YYTD_ID_ACCEPT);
        tbl->td_flags |= YYTD_DATA32;
        tbl->td_hilen = 0;      /* it's a one-dimensional array */
        tbl->td_lolen = lastdfa + 1;
 
        tbl->td_data = tdata =
-           calloc(tbl->td_lolen, sizeof(flex_int32_t));
+           xcalloc(tbl->td_lolen, sizeof(flex_int32_t));
 
        dfaacc[end_of_buffer_state].dfaacc_state = end_of_buffer_action;
 
@@ -1102,11 +1102,11 @@
                    "\t{YYTD_ID_ACCLIST, (void**)&yy_acclist, sizeof(%s)},\n",
                    long_align ? "flex_int32_t" : "flex_int16_t");
 
-               yyacclist_tbl = calloc(1, sizeof(struct yytbl_data));
+               yyacclist_tbl = xcalloc(1, sizeof(struct yytbl_data));
                yytbl_data_init(yyacclist_tbl, YYTD_ID_ACCLIST);
                yyacclist_tbl->td_lolen = MAX(numas, 1) + 1;
                yyacclist_tbl->td_data = yyacclist_data =
-                   calloc(yyacclist_tbl->td_lolen, sizeof(flex_int32_t));
+                   xcalloc(yyacclist_tbl->td_lolen, sizeof(flex_int32_t));
                yyacclist_curr = 1;
 
                j = 1;          /* index into "yy_acclist" array */
@@ -1212,11 +1212,11 @@
            "\t{YYTD_ID_ACCEPT, (void**)&yy_accept, sizeof(%s)},\n",
            long_align ? "flex_int32_t" : "flex_int16_t");
 
-       yyacc_tbl = calloc(1, sizeof(struct yytbl_data));
+       yyacc_tbl = xcalloc(1, sizeof(struct yytbl_data));
        yytbl_data_init(yyacc_tbl, YYTD_ID_ACCEPT);
        yyacc_tbl->td_lolen = k;
        yyacc_tbl->td_data = yyacc_data =
-           calloc(yyacc_tbl->td_lolen, sizeof(flex_int32_t));
+           xcalloc(yyacc_tbl->td_lolen, sizeof(flex_int32_t));
        yyacc_curr = 1;
 
        for (i = 1; i <= lastdfa; ++i) {
@@ -1268,11 +1268,11 @@
                 * templates with).
                 */
                flex_int32_t *yymecs_data = NULL;
-               yymeta_tbl = calloc(1, sizeof(struct yytbl_data));
+               yymeta_tbl = xcalloc(1, sizeof(struct yytbl_data));
                yytbl_data_init(yymeta_tbl, YYTD_ID_META);
                yymeta_tbl->td_lolen = numecs + 1;
                yymeta_tbl->td_data = yymecs_data =
-                   calloc(yymeta_tbl->td_lolen,
+                   xcalloc(yymeta_tbl->td_lolen,
                    sizeof(flex_int32_t));
 
                if (trace)
@@ -1315,11 +1315,11 @@
            "\t{YYTD_ID_BASE, (void**)&yy_base, sizeof(%s)},\n",
            (tblend >= INT16_MAX
                || long_align) ? "flex_int32_t" : "flex_int16_t");
-       yybase_tbl = calloc(1, sizeof(struct yytbl_data));
+       yybase_tbl = xcalloc(1, sizeof(struct yytbl_data));
        yytbl_data_init(yybase_tbl, YYTD_ID_BASE);
        yybase_tbl->td_lolen = total_states + 1;
        yybase_tbl->td_data = yybase_data =
-           calloc(yybase_tbl->td_lolen,
+           xcalloc(yybase_tbl->td_lolen,
            sizeof(flex_int32_t));
        yybase_curr = 1;
 
@@ -1372,11 +1372,11 @@
            (total_states >= INT16_MAX
                || long_align) ? "flex_int32_t" : "flex_int16_t");
 
-       yydef_tbl = calloc(1, sizeof(struct yytbl_data));
+       yydef_tbl = xcalloc(1, sizeof(struct yytbl_data));
        yytbl_data_init(yydef_tbl, YYTD_ID_DEF);
        yydef_tbl->td_lolen = total_states + 1;
        yydef_tbl->td_data = yydef_data =
-           calloc(yydef_tbl->td_lolen, sizeof(flex_int32_t));
+           xcalloc(yydef_tbl->td_lolen, sizeof(flex_int32_t));
 
        for (i = 1; i <= total_states; ++i) {
                mkdata(def[i]);
@@ -1404,11 +1404,11 @@
            (total_states >= INT16_MAX
                || long_align) ? "flex_int32_t" : "flex_int16_t");
 
-       yynxt_tbl = calloc(1, sizeof(struct yytbl_data));
+       yynxt_tbl = xcalloc(1, sizeof(struct yytbl_data));
        yytbl_data_init(yynxt_tbl, YYTD_ID_NXT);
        yynxt_tbl->td_lolen = tblend + 1;
        yynxt_tbl->td_data = yynxt_data =
-           calloc(yynxt_tbl->td_lolen, sizeof(flex_int32_t));
+           xcalloc(yynxt_tbl->td_lolen, sizeof(flex_int32_t));
 
        for (i = 1; i <= tblend; ++i) {
                /*
@@ -1442,11 +1442,11 @@
            (total_states >= INT16_MAX
                || long_align) ? "flex_int32_t" : "flex_int16_t");
 
-       yychk_tbl = calloc(1, sizeof(struct yytbl_data));
+       yychk_tbl = xcalloc(1, sizeof(struct yytbl_data));
        yytbl_data_init(yychk_tbl, YYTD_ID_CHK);
        yychk_tbl->td_lolen = tblend + 1;
        yychk_tbl->td_data = yychk_data =
-           calloc(yychk_tbl->td_lolen, sizeof(flex_int32_t));
+           xcalloc(yychk_tbl->td_lolen, sizeof(flex_int32_t));
 
        for (i = 1; i <= tblend; ++i) {
                if (chk[i] == 0)
@@ -1703,13 +1703,13 @@
                    (fullspd) ? "struct yy_trans_info*" :
                    "flex_int32_t");
 
-               yynultrans_tbl = calloc(1, sizeof(struct yytbl_data));
+               yynultrans_tbl = xcalloc(1, sizeof(struct yytbl_data));
                yytbl_data_init(yynultrans_tbl, YYTD_ID_NUL_TRANS);
                if (fullspd)
                        yynultrans_tbl->td_flags |= YYTD_PTRANS;
                yynultrans_tbl->td_lolen = lastdfa + 1;
                yynultrans_tbl->td_data = yynultrans_data =
-                   calloc(yynultrans_tbl->td_lolen,
+                   xcalloc(yynultrans_tbl->td_lolen,
                    sizeof(flex_int32_t));
 
                for (i = 1; i <= lastdfa; ++i) {
Index: main.c
===================================================================
RCS file: /cvs/src/usr.bin/lex/main.c,v
retrieving revision 1.27
diff -u -r1.27 main.c
--- main.c      21 Jan 2017 08:33:07 -0000      1.27
+++ main.c      28 Aug 2019 13:23:16 -0000
@@ -382,7 +382,7 @@
 
                if (!tablesfilename) {
                        nbytes = strlen(prefix) + strlen(tablesfile_template) + 
2;
-                       tablesfilename = pname = (char *) calloc(nbytes, 1);
+                       tablesfilename = pname = xcalloc(nbytes, 1);
                        snprintf(pname, nbytes, tablesfile_template, prefix);
                }
                if ((tablesout = fopen(tablesfilename, "w")) == NULL)
@@ -393,7 +393,7 @@
                yytbl_writer_init(&tableswr, tablesout);
 
                nbytes = strlen(prefix) + strlen("tables") + 2;
-               tablesname = (char *) calloc(nbytes, 1);
+               tablesname = xcalloc(nbytes, 1);
                snprintf(tablesname, nbytes, "%stables", prefix);
                yytbl_hdr_init(&hdr, flex_version, tablesname);
 
@@ -434,9 +434,8 @@
                        char *str, *fmt = "#define %s %d\n";
                        size_t strsz;
 
-                       str = (char *) malloc(strsz = strlen(fmt) + 
strlen(scname[i]) + (int) (1 + log10(i)) + 2);
-                       if (!str)
-                               flexfatal(_("allocation of macro definition 
failed"));
+                       strsz = strlen(fmt) + strlen(scname[i]) + (int) (1 + 
log10(i)) + 2;
+                       str = xmalloc(strsz);
                        snprintf(str, strsz, fmt, scname[i], i - 1);
                        buf_strappend(&tmpbuf, str);
                        free(str);
Index: misc.c
===================================================================
RCS file: /cvs/src/usr.bin/lex/misc.c,v
retrieving revision 1.19
diff -u -r1.19 misc.c
--- misc.c      19 Nov 2015 23:34:56 -0000      1.19
+++ misc.c      28 Aug 2019 13:23:16 -0000
@@ -63,14 +63,12 @@
 {
        if (!sko_stack) {
                sko_sz = 1;
-               sko_stack = malloc(sizeof(struct sko_state) * sko_sz);
-               if (!sko_stack)
-                       flexfatal(_("allocation of sko_stack failed"));
+               sko_stack = xmalloc(sizeof(struct sko_state) * sko_sz);
                sko_len = 0;
        }
        if (sko_len >= sko_sz) {
                sko_sz *= 2;
-               sko_stack = realloc(sko_stack, sizeof(struct sko_state) * 
sko_sz);
+               sko_stack = xrealloc(sko_stack, sizeof(struct sko_state) * 
sko_sz);
        }
        /* initialize to zero and push */
        sko_stack[sko_len].dc = dc;
@@ -176,15 +174,9 @@
        int size;
        size_t element_size;
 {
-       void *mem;
        size_t num_bytes = element_size * size;
 
-       mem = malloc(num_bytes);
-       if (!mem)
-               flexfatal(_
-                   ("memory allocation failed in allocate_array()"));
-
-       return mem;
+       return (xmalloc(num_bytes));
 }
 
 
@@ -275,11 +267,7 @@
        for (c1 = str; *c1; ++c1);
 
        size = (c1 - str + 1) * sizeof(char);
-
-       copy = (char *) malloc(size);
-
-       if (copy == NULL)
-               flexfatal(_("dynamic memory failure in copy_string()"));
+       copy = xmalloc(size);
 
        for (c2 = copy; (*c2++ = *str++) != 0;);
 
@@ -836,14 +824,9 @@
        int size;
        size_t element_size;
 {
-       void *new_array;
        size_t num_bytes = element_size * size;
 
-       new_array = realloc(array, num_bytes);
-       if (!new_array)
-               flexfatal(_("attempt to increase array size failed"));
-
-       return new_array;
+       return (xrealloc(array, num_bytes));
 }
 
 
@@ -991,21 +974,37 @@
        }
 }
 
+void *
+xmalloc(size_t size)
+{
+       void *p;
+
+       p = malloc(size);
+       if (p == NULL)
+               flexerror(_("malloc failed"));
+       return (p);
+}
 
-/* The following is only needed when building flex's parser using certain
- * broken versions of bison.
- */
 void *
-yy_flex_xmalloc(size)
-       int size;
+xcalloc(size_t nmemb, size_t size)
 {
-       void *result = malloc((size_t) size);
+       void *p;
 
-       if (!result)
-               flexfatal(_
-                   ("memory allocation failed in yy_flex_xmalloc()"));
+       p = calloc(nmemb, size);
+       if (p == NULL)
+               flexerror(_("calloc failed"));
+       return (p);
+}
 
-       return result;
+void *
+xrealloc(void *ptr, size_t size)
+{
+       void *p;
+
+       p = realloc(ptr, size);
+       if (p == NULL)
+               flexerror(_("realloc failed"));
+       return (p);
 }
 
 
Index: regex.c
===================================================================
RCS file: /cvs/src/usr.bin/lex/regex.c,v
retrieving revision 1.3
diff -u -r1.3 regex.c
--- regex.c     19 Nov 2015 23:20:34 -0000      1.3
+++ regex.c     28 Aug 2019 13:23:17 -0000
@@ -59,12 +59,8 @@
         const int errbuf_sz = 200;
         char *errbuf, *rxerr;
 
-               errbuf = (char*)malloc(errbuf_sz *sizeof(char));
-               if (!errbuf)
-                       flexfatal(_("Unable to allocate buffer to report 
regcomp"));
-               rxerr = (char*)malloc(errbuf_sz *sizeof(char));
-               if (!rxerr)
-                       flexfatal(_("Unable to allocate buffer for regerror"));
+               errbuf = xmalloc(errbuf_sz * sizeof(char));
+               rxerr = xmalloc(errbuf_sz * sizeof(char));
                regerror (err, preg, rxerr, errbuf_sz);
                snprintf (errbuf, errbuf_sz, "regcomp for \"%s\" failed: %s", 
regex, rxerr);
 
@@ -87,9 +83,7 @@
        if (m == NULL || m->rm_so < 0)
                return NULL;
        len = m->rm_eo - m->rm_so;
-       str = (char *) malloc ((len + 1) * sizeof (char));
-       if (!str)
-               flexfatal(_("Unable to allocate a copy of the match"));
+       str = xmalloc((len + 1) * sizeof(char));
        strncpy (str, src + m->rm_so, len);
        str[len] = 0;
        return str;
Index: scanflags.c
===================================================================
RCS file: /cvs/src/usr.bin/lex/scanflags.c,v
retrieving revision 1.3
diff -u -r1.3 scanflags.c
--- scanflags.c 19 Nov 2015 23:20:34 -0000      1.3
+++ scanflags.c 28 Aug 2019 13:23:17 -0000
@@ -41,9 +41,10 @@
 void
 sf_push (void)
 {
-    if (_sf_top_ix + 1 >= _sf_max)
-        _sf_stk = (scanflags_t*) realloc ( (void*) _sf_stk, 
sizeof(scanflags_t) * (_sf_max += 32));
-
+    if (_sf_top_ix + 1 >= _sf_max) {
+        _sf_max += 32;
+        _sf_stk = xrealloc(_sf_stk, sizeof(scanflags_t) * _sf_max);
+    }
     // copy the top element
     _sf_stk[_sf_top_ix + 1] = _sf_stk[_sf_top_ix];
     ++_sf_top_ix;
@@ -61,9 +62,7 @@
 sf_init (void)
 {
     assert(_sf_stk == NULL);
-    _sf_stk = (scanflags_t*) malloc ( sizeof(scanflags_t) * (_sf_max = 32));
-    if (!_sf_stk)
-        lerrsf_fatal(_("Unable to allocate %ld of stack"),
-            (void *)sizeof(scanflags_t));
+    _sf_max = 32;
+    _sf_stk = xmalloc(sizeof(scanflags_t) * _sf_max);
     _sf_stk[_sf_top_ix] = 0;
 }
Index: scanopt.c
===================================================================
RCS file: /cvs/src/usr.bin/lex/scanopt.c,v
retrieving revision 1.6
diff -u -r1.6 scanopt.c
--- scanopt.c   31 May 2017 07:20:26 -0000      1.6
+++ scanopt.c   28 Aug 2019 13:23:17 -0000
@@ -169,8 +169,8 @@
 {
        int     i;
        struct _scanopt_t *s;
-       s = (struct _scanopt_t *) malloc (sizeof (struct _scanopt_t));
 
+       s = xmalloc(sizeof(struct _scanopt_t));
        s->options = options;
        s->optc = 0;
        s->argc = argc;
@@ -188,7 +188,7 @@
                s->optc++;
 
        /* Build auxiliary data */
-       s->aux = (struct _aux *) malloc (s->optc * sizeof (struct _aux));
+       s->aux = xmalloc(s->optc * sizeof(struct _aux));
 
        for (i = 0; i < s->optc; i++) {
                const u_char *p, *pname;
@@ -295,7 +295,7 @@
        fprintf (fp, "\n");
 
        /* Sort by r_val and string. Yes, this is O(n*n), but n is small. */
-       store = (usg_elem *) malloc (s->optc * sizeof (usg_elem));
+       store = xmalloc(s->optc * sizeof(usg_elem));
        for (i = 0; i < s->optc; i++) {
 
                /* grab the next preallocate node. */
Index: sym.c
===================================================================
RCS file: /cvs/src/usr.bin/lex/sym.c,v
retrieving revision 1.9
diff -u -r1.9 sym.c
--- sym.c       19 Nov 2015 23:34:56 -0000      1.9
+++ sym.c       28 Aug 2019 13:23:17 -0000
@@ -95,11 +95,7 @@
        }
 
        /* create new entry */
-       new_entry = (struct hash_entry *)
-               malloc (sizeof (struct hash_entry));
-
-       if (new_entry == NULL)
-               flexfatal (_("symbol table memory allocation failed"));
+       new_entry = xmalloc(sizeof(struct hash_entry));
 
        if ((successor = table[hash_val]) != 0) {
                new_entry->next = successor;
Index: tables.c
===================================================================
RCS file: /cvs/src/usr.bin/lex/tables.c,v
retrieving revision 1.4
diff -u -r1.4 tables.c
--- tables.c    17 Aug 2017 19:27:09 -0000      1.4
+++ tables.c    28 Aug 2019 13:23:17 -0000
@@ -439,7 +439,7 @@
        }
 
        total_len = yytbl_calc_total_len (tbl);
-       newtbl.td_data = calloc (total_len, newsz);
+       newtbl.td_data = xcalloc(total_len, newsz);
        newtbl.td_flags =
                TFLAGS_CLRDATA (newtbl.td_flags) | BYTES2TFLAG (newsz);
 

Reply via email to