From: Vladimir 'phcoder' Serbinenko Date: Sun, 29 Jan 2012 17:20:02 +0000 (+0100) Subject: * grub-core/normal/completion.c (iterate_dev): Close the disk. X-Git-Tag: 2.00~751 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=f990cbf90e0e03bd47d1b9e7b9ed37683aba315d;p=thirdparty%2Fgrub.git * grub-core/normal/completion.c (iterate_dev): Close the disk. --- diff --git a/ChangeLog b/ChangeLog index bf067ed7f..aed505579 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2012-01-29 Vladimir Serbinenko + + * grub-core/normal/completion.c (iterate_dev): Close the disk. + 2012-01-29 Vladimir Serbinenko Cryptodisk write support. diff --git a/grub-core/normal/completion.c b/grub-core/normal/completion.c index f4dab533b..2a802390f 100644 --- a/grub-core/normal/completion.c +++ b/grub-core/normal/completion.c @@ -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; }