]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
* grub-core/normal/completion.c (iterate_dev): Close the disk.
authorVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Sun, 29 Jan 2012 17:20:02 +0000 (18:20 +0100)
committerVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Sun, 29 Jan 2012 17:20:02 +0000 (18:20 +0100)
ChangeLog
grub-core/normal/completion.c

index bf067ed7f864384706f7e16a7e7cc4b928056d4a..aed5055795859205fe6fc09718506cca784bb099 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2012-01-29  Vladimir Serbinenko  <phcoder@gmail.com>
+
+       * grub-core/normal/completion.c (iterate_dev): Close the disk.
+
 2012-01-29  Vladimir Serbinenko  <phcoder@gmail.com>
 
        Cryptodisk write support.
index f4dab533b2768a5335452db13b356ae005473716..2a802390fdae28bdfc1e9961a7aa1e19d033cb18 100644 (file)
@@ -161,29 +161,43 @@ iterate_dev (const char *devname)
   /* Complete the partition part.  */
   dev = grub_device_open (devname);
 
-  if (dev)
+  if (!dev)
     {
-      char tmp[grub_strlen (devname) + sizeof (",")];
+      grub_errno = GRUB_ERR_NONE;
+      return 0;
+    }
+  {
+    char tmp[grub_strlen (devname) + sizeof (",")];
 
-      grub_memcpy (tmp, devname, grub_strlen (devname));
+    grub_memcpy (tmp, devname, grub_strlen (devname));
 
-      if (grub_strcmp (devname, current_word) == 0)
-       {
-         if (add_completion (devname, ")", GRUB_COMPLETION_TYPE_PARTITION))
+    if (grub_strcmp (devname, current_word) == 0)
+      {
+       if (add_completion (devname, ")", GRUB_COMPLETION_TYPE_PARTITION))
+         {
+           grub_device_close (dev);
            return 1;
+         }
 
-         if (dev->disk)
-           if (grub_partition_iterate (dev->disk, iterate_partition))
+       if (dev->disk)
+         if (grub_partition_iterate (dev->disk, iterate_partition))
+           {
+             grub_device_close (dev);
              return 1;
-       }
-      else
-       {
-         grub_memcpy (tmp + grub_strlen (devname), "", sizeof (""));
-         if (add_completion (tmp, "", GRUB_COMPLETION_TYPE_DEVICE))
+           }
+      }
+    else
+      {
+       grub_memcpy (tmp + grub_strlen (devname), "", sizeof (""));
+       if (add_completion (tmp, "", GRUB_COMPLETION_TYPE_DEVICE))
+         {
+           grub_device_close (dev);
            return 1;
-       }
-    }
+         }
+      }
+  }
 
+  grub_device_close (dev);
   grub_errno = GRUB_ERR_NONE;
   return 0;
 }