From 688e7182d8ba12678803632d2c7b32c8e5636cd9 Mon Sep 17 00:00:00 2001 From: Tomohiro Kusumi Date: Mon, 17 Apr 2017 14:17:48 +0300 Subject: [PATCH] sbin/mount_hammer: Use calloc(3) and cleanups --- sbin/mount_hammer/mount_hammer.c | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/sbin/mount_hammer/mount_hammer.c b/sbin/mount_hammer/mount_hammer.c index 5cc6bd11e1..e3bfa1d0e4 100644 --- a/sbin/mount_hammer/mount_hammer.c +++ b/sbin/mount_hammer/mount_hammer.c @@ -202,26 +202,24 @@ extract_volumes(struct hammer_mount_info *info, char **av, int ac) { int idx = 0; int arymax = 32; - char **ary = malloc(sizeof(char *) * arymax); - char *ptr; - char *next; - char *orig; + char **ary, *ptr, *next, *orig; + +#define _extend_ary(ary, arymax) ({ \ + (arymax) += 32; \ + realloc(ary, (arymax) * sizeof(char *)); \ + }) + ary = calloc(arymax, sizeof(char *)); while (ac) { - if (idx == arymax) { - arymax += 32; - ary = realloc(ary, sizeof(char *) * arymax); - } + if (idx == arymax) + ary = _extend_ary(ary, arymax); if (strchr(*av, ':') == NULL) { ary[idx++] = strdup(*av); } else { orig = next = strdup(*av); while ((ptr = next) != NULL) { - if (idx == arymax) { - arymax += 32; - ary = realloc(ary, sizeof(char *) * - arymax); - } + if (idx == arymax) + ary = _extend_ary(ary, arymax); if ((next = strchr(ptr, ':')) != NULL) *next++ = 0; ary[idx++] = strdup(ptr); -- 2.11.4.GIT