=================================================================== RCS file: /cvs/mandoc/compat_fts.c,v retrieving revision 1.15 retrieving revision 1.16 diff -u -p -r1.15 -r1.16 --- mandoc/compat_fts.c 2020/06/14 22:49:36 1.15 +++ mandoc/compat_fts.c 2020/06/14 23:08:35 1.16 @@ -6,8 +6,8 @@ int dummy; #else -/* $Id: compat_fts.c,v 1.15 2020/06/14 22:49:36 schwarze Exp $ */ -/* $OpenBSD: compat_fts.c,v 1.15 2020/06/14 22:49:36 schwarze Exp $ */ +/* $Id: compat_fts.c,v 1.16 2020/06/14 23:08:35 schwarze Exp $ */ +/* $OpenBSD: compat_fts.c,v 1.16 2020/06/14 23:08:35 schwarze Exp $ */ /*- * Copyright (c) 1990, 1993, 1994 @@ -575,14 +575,14 @@ fts_sort(FTS *sp, FTSENT *head, int nitems) if (nitems > sp->fts_nitems) { struct _ftsent **a; - sp->fts_nitems = nitems + 40; if ((a = reallocarray(sp->fts_array, - sp->fts_nitems, sizeof(FTSENT *))) == NULL) { + nitems + 40, sizeof(FTSENT *))) == NULL) { free(sp->fts_array); sp->fts_array = NULL; sp->fts_nitems = 0; return (head); } + sp->fts_nitems = nitems + 40; sp->fts_array = a; } for (ap = sp->fts_array, p = head; p; p = p->fts_link) @@ -651,13 +651,14 @@ fts_palloc(FTS *sp, size_t more) errno = ENAMETOOLONG; return (1); } - sp->fts_pathlen += more; - p = realloc(sp->fts_path, sp->fts_pathlen); + p = recallocarray(sp->fts_path, sp->fts_pathlen, + sp->fts_pathlen + more, 1); if (p == NULL) { free(sp->fts_path); sp->fts_path = NULL; return (1); } + sp->fts_pathlen += more; sp->fts_path = p; return (0); }