Expand the macro #define sizeofN(type, n) (sizeof(type) * n)
whenever it occurs as an argument to `alloc' or `aresize' and replace `alloc' by `allocarray' and `aresize' by `aresizearray'. There remains one single call to sizeofN(a,b) (see the patch for exec.c) which could safely be replaced by `a * b'. Index: c_sh.c =================================================================== RCS file: /cvs/src/bin/ksh/c_sh.c,v retrieving revision 1.45 diff -u -p -r1.45 c_sh.c --- c_sh.c 27 Aug 2014 08:26:04 -0000 1.45 +++ c_sh.c 23 May 2015 11:58:27 -0000 @@ -614,7 +614,8 @@ c_set(char **wp) while (*++wp != NULL) *wp = str_save(*wp, &l->area); l->argc = wp - owp - 1; - l->argv = (char **) alloc(sizeofN(char *, l->argc+2), &l->area); + l->argv = (char **) allocarray(l->argc+2, sizeof(char *), + &l->area); for (wp = l->argv; (*wp++ = *owp++) != NULL; ) ; } Index: exec.c =================================================================== RCS file: /cvs/src/bin/ksh/exec.c,v retrieving revision 1.51 diff -u -p -r1.51 exec.c --- exec.c 18 Apr 2015 18:28:36 -0000 1.51 +++ exec.c 23 May 2015 11:58:27 -0000 @@ -92,7 +92,8 @@ execute(struct op *volatile t, flags &= ~XTIME; if (t->ioact != NULL || t->type == TPIPE || t->type == TCOPROC) { - e->savefd = (short *) alloc(sizeofN(short, NUFILE), ATEMP); + e->savefd = (short *) allocarray(NUFILE, sizeof(short), + ATEMP); /* initialize to not redirected */ memset(e->savefd, 0, sizeofN(short, NUFILE)); } Index: expand.h =================================================================== RCS file: /cvs/src/bin/ksh/expand.h,v retrieving revision 1.6 diff -u -p -r1.6 expand.h --- expand.h 30 Mar 2005 17:16:37 -0000 1.6 +++ expand.h 23 May 2015 11:58:27 -0000 @@ -82,7 +82,7 @@ typedef struct XPtrV { #define XPinit(x, n) do { \ void **vp__; \ - vp__ = (void**) alloc(sizeofN(void*, n), ATEMP); \ + vp__ = (void**) allocarray(n, sizeof(void*), ATEMP); \ (x).cur = (x).beg = vp__; \ (x).end = vp__ + n; \ } while (0) @@ -90,8 +90,9 @@ typedef struct XPtrV { #define XPput(x, p) do { \ if ((x).cur >= (x).end) { \ int n = XPsize(x); \ - (x).beg = (void**) aresize((void*) (x).beg, \ - sizeofN(void*, n*2), ATEMP); \ + (x).beg = (void**) \ + aresizearray((void*) (x).beg, \ + n, 2*sizeof(void*), ATEMP); \ (x).cur = (x).beg + n; \ (x).end = (x).cur + n; \ } \ @@ -101,7 +102,7 @@ typedef struct XPtrV { #define XPptrv(x) ((x).beg) #define XPsize(x) ((x).cur - (x).beg) -#define XPclose(x) (void**) aresize((void*)(x).beg, \ - sizeofN(void*, XPsize(x)), ATEMP) +#define XPclose(x) (void**) aresizearray((void*)(x).beg, \ + XPsize(x), sizeof(void*), ATEMP) #define XPfree(x) afree((void*) (x).beg, ATEMP) Index: syn.c =================================================================== RCS file: /cvs/src/bin/ksh/syn.c,v retrieving revision 1.29 diff -u -p -r1.29 syn.c --- syn.c 3 Jun 2013 18:40:05 -0000 1.29 +++ syn.c 23 May 2015 11:58:27 -0000 @@ -197,7 +197,7 @@ get_command(int cf) XPtrV args, vars; struct nesting_state old_nesting; - iops = (struct ioword **) alloc(sizeofN(struct ioword *, NUFILE+1), + iops = (struct ioword **) allocarray(NUFILE+1, sizeof(struct ioword *), ATEMP); XPinit(args, 16); XPinit(vars, 16); @@ -389,8 +389,8 @@ get_command(int cf) t->ioact = NULL; } else { iops[iopn++] = NULL; - iops = (struct ioword **) aresize((void*) iops, - sizeofN(struct ioword *, iopn), ATEMP); + iops = (struct ioword **) aresizearray((void*) iops, + iopn, sizeof(struct ioword *), ATEMP); t->ioact = iops; } @@ -565,8 +565,8 @@ function_body(char *name, * be used as input), we pretend there is a colon here. */ t->left = newtp(TCOM); - t->left->args = (char **) alloc(sizeof(char *) * 2, ATEMP); - t->left->args[0] = alloc(sizeof(char) * 3, ATEMP); + t->left->args = (char **) allocarray(2, sizeof(char *), ATEMP); + t->left->args[0] = allocarray(3, sizeof(char), ATEMP); t->left->args[0][0] = CHAR; t->left->args[0][1] = ':'; t->left->args[0][2] = EOS; Index: table.c =================================================================== RCS file: /cvs/src/bin/ksh/table.c,v retrieving revision 1.15 diff -u -p -r1.15 table.c --- table.c 19 Feb 2012 07:52:30 -0000 1.15 +++ table.c 23 May 2015 11:58:27 -0000 @@ -40,7 +40,8 @@ texpand(struct table *tp, int nsize) struct tbl **ntblp, **otblp = tp->tbls; int osize = tp->size; - ntblp = (struct tbl**) alloc(sizeofN(struct tbl *, nsize), tp->areap); + ntblp = (struct tbl**) allocarray(nsize, sizeof(struct tbl *), + tp->areap); for (i = 0; i < nsize; i++) ntblp[i] = NULL; tp->size = nsize; @@ -170,7 +171,7 @@ ktsort(struct table *tp) int i; struct tbl **p, **sp, **dp; - p = (struct tbl **)alloc(sizeofN(struct tbl *, tp->size+1), ATEMP); + p = (struct tbl **) allocarray(tp->size+1, sizeof(struct tbl *), ATEMP); sp = tp->tbls; /* source */ dp = p; /* dest */ for (i = 0; i < tp->size; i++)