diff options
author | Paul Eggert <eggert@cs.ucla.edu> | 2021-06-11 17:18:57 -0700 |
---|---|---|
committer | Paul Eggert <eggert@cs.ucla.edu> | 2021-06-11 17:20:13 -0700 |
commit | d4e7edeb474203904b55ef575b3e57157c26e080 (patch) | |
tree | 8da590c63c2b50aab92a517996eae05faa7895ad | |
parent | 9a32e79bad30024f00dafcc4b4bbf7a7a69d558e (diff) | |
download | gnulib-d4e7edeb474203904b55ef575b3e57157c26e080.tar.gz |
savedir: prefer idx_t for indexes
* lib/savedir.c (streamsavedir):
Prefer idx_t to size_t for indexes, using idx_t-related allocators.
-rw-r--r-- | ChangeLog | 1 | ||||
-rw-r--r-- | lib/savedir.c | 14 |
2 files changed, 7 insertions, 8 deletions
@@ -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 1c23d75b68..55e0acd87a 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; |