In find_all_disks(), use two local variables called "ret_disks" and
"ret_removable", for most of the logic. Only set "all_disks" and
"all_removable" at the end of the function. No observable changes.

Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2124538
Signed-off-by: Laszlo Ersek <ler...@redhat.com>
---
 disks.c | 30 +++++++++++---------
 1 file changed, 17 insertions(+), 13 deletions(-)

diff --git a/disks.c b/disks.c
index 4f94719787ac..e9c92b8c69e8 100644
--- a/disks.c
+++ b/disks.c
@@ -116,6 +116,7 @@ find_all_disks (void)
   DIR *dir;
   struct dirent *d;
   size_t nr_disks = 0, nr_removable = 0;
+  char **ret_disks = NULL, **ret_removable = NULL;
   dev_t root_device = 0;
   struct stat statbuf;
 
@@ -147,26 +148,26 @@ find_all_disks (void)
         continue;
 
       nr_disks++;
-      all_disks = realloc (all_disks, sizeof (char *) * (nr_disks + 1));
-      if (!all_disks)
+      ret_disks = realloc (ret_disks, sizeof (char *) * (nr_disks + 1));
+      if (!ret_disks)
         error (EXIT_FAILURE, errno, "realloc");
 
-      all_disks[nr_disks-1] = strdup (d->d_name);
+      ret_disks[nr_disks-1] = strdup (d->d_name);
 
       /* cciss device /dev/cciss/c0d0 will be /sys/block/cciss!c0d0 */
-      p = strchr (all_disks[nr_disks-1], '!');
+      p = strchr (ret_disks[nr_disks-1], '!');
       if (p) *p = '/';
 
-      all_disks[nr_disks] = NULL;
+      ret_disks[nr_disks] = NULL;
     }
     else if (STRPREFIX (d->d_name, "sr")) {
       nr_removable++;
-      all_removable = realloc (all_removable,
+      ret_removable = realloc (ret_removable,
                                sizeof (char *) * (nr_removable + 1));
-      if (!all_removable)
+      if (!ret_removable)
         error (EXIT_FAILURE, errno, "realloc");
-      all_removable[nr_removable-1] = strdup (d->d_name);
-      all_removable[nr_removable] = NULL;
+      ret_removable[nr_removable-1] = strdup (d->d_name);
+      ret_removable[nr_removable] = NULL;
     }
   }
 
@@ -178,8 +179,11 @@ find_all_disks (void)
   if (closedir (dir) == -1)
     error (EXIT_FAILURE, errno, "closedir: %s", "/sys/block");
 
-  if (all_disks)
-    qsort (all_disks, nr_disks, sizeof (char *), compare_strings);
-  if (all_removable)
-    qsort (all_removable, nr_removable, sizeof (char *), compare_strings);
+  if (ret_disks)
+    qsort (ret_disks, nr_disks, sizeof (char *), compare_strings);
+  if (ret_removable)
+    qsort (ret_removable, nr_removable, sizeof (char *), compare_strings);
+
+  all_disks = ret_disks;
+  all_removable = ret_removable;
 }

_______________________________________________
Libguestfs mailing list
Libguestfs@redhat.com
https://listman.redhat.com/mailman/listinfo/libguestfs

Reply via email to