From aca6350297d3e1c09ff101b75c2b0c6d2177c276 Mon Sep 17 00:00:00 2001 From: robertmh Date: Sat, 16 Feb 2008 22:31:35 +0000 Subject: [PATCH] 2008-02-16 Robert Millan * util/i386/pc/grub-setup.c (setup): In find_first_partition_start(), do not assume partition map is PC/MSDOS before performing checks that are specific to that layout. --- ChangeLog | 6 ++++++ util/i386/pc/grub-setup.c | 20 ++++++++++++++------ 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index a658c59c4..8e9a768cd 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2008-02-16 Robert Millan + + * util/i386/pc/grub-setup.c (setup): In find_first_partition_start(), + do not assume partition map is PC/MSDOS before performing checks that + are specific to that layout. + 2008-02-13 Robert Millan * conf/i386-linuxbios.rmk (grub_emu_SOURCES): Remove diff --git a/util/i386/pc/grub-setup.c b/util/i386/pc/grub-setup.c index 08404eba2..c77cd0991 100644 --- a/util/i386/pc/grub-setup.c +++ b/util/i386/pc/grub-setup.c @@ -120,13 +120,21 @@ setup (const char *prefix, const char *dir, int find_first_partition_start (grub_disk_t disk __attribute__ ((unused)), const grub_partition_t p) { - struct grub_pc_partition *pcdata = p->data; + if (! strcmp (p->partmap->name, "pc_partition_map")) + { + struct grub_pc_partition *pcdata = p->data; + + if (! grub_pc_partition_is_empty (pcdata->dos_type) + && ! grub_pc_partition_is_bsd (pcdata->dos_type) + && first_start > p->start) + first_start = p->start; + } + else + { + if (first_start > p->start) + first_start = p->start; + } - if (! grub_pc_partition_is_empty (pcdata->dos_type) - && ! grub_pc_partition_is_bsd (pcdata->dos_type) - && first_start > p->start) - first_start = p->start; - return 0; }