* lib/savedir.c (streamsavedir): Prefer idx_t to size_t for indexes, using idx_t-related allocators. --- ChangeLog | 1 + lib/savedir.c | 14 ++++++-------- 2 files changed, 7 insertions(+), 8 deletions(-)
diff --git a/ChangeLog b/ChangeLog index be79b866c..93039a69a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -12,6 +12,7 @@ * lib/linebuffer.h (struct linebuffer): * lib/readtokens.c (readtoken, readtokens): * lib/readutmp.c (read_utmp): + * lib/savedir.c (streamsavedir): Prefer idx_t to size_t for indexes, and use idx_t-related allocators. * lib/basename.c: Do not include xstrndup.h. (basename): Simplify by always using memcpy. diff --git a/lib/savedir.c b/lib/savedir.c index 1c23d75b6..55e0acd87 100644 --- a/lib/savedir.c +++ b/lib/savedir.c @@ -93,7 +93,7 @@ streamsavedir (DIR *dirp, enum savedir_option option) char *name_space = NULL; idx_t allocated = 0; direntry_t *entries = NULL; - size_t entries_allocated = 0; + idx_t entries_allocated = 0; idx_t entries_used = 0; idx_t used = 0; comparison_function cmp = comparison_function_table[option]; @@ -120,8 +120,8 @@ streamsavedir (DIR *dirp, enum savedir_option option) if (cmp) { if (entries_allocated == entries_used) - entries = x2nrealloc (entries, &entries_allocated, - sizeof *entries); + entries = xpalloc (entries, &entries_allocated, 1, -1, + sizeof *entries); entries[entries_used].name = xstrdup (entry); #if D_INO_IN_DIRENT entries[entries_used].ino = dp->d_ino; @@ -149,13 +149,11 @@ streamsavedir (DIR *dirp, enum savedir_option option) if (cmp) { - size_t i; - if (entries_used) qsort (entries, entries_used, sizeof *entries, cmp); - name_space = xmalloc (used + 1); + name_space = ximalloc (used + 1); used = 0; - for (i = 0; i < entries_used; i++) + for (idx_t i = 0; i < entries_used; i++) { char *dest = name_space + used; used += stpcpy (dest, entries[i].name) - dest + 1; @@ -164,7 +162,7 @@ streamsavedir (DIR *dirp, enum savedir_option option) free (entries); } else if (used == allocated) - name_space = xrealloc (name_space, used + 1); + name_space = xirealloc (name_space, used + 1); name_space[used] = '\0'; return name_space; -- 2.30.2