From: Will Sowerbutts Date: Mon, 5 Jan 2015 02:32:24 +0000 (+0000) Subject: Kernel: mbr: Fix bug when four primary partitions are present (also saves 15 bytes) X-Git-Url: https://git.ndcode.org/public/gitweb.cgi?a=commitdiff_plain;h=021214bb494878f3604c4e77caacff08bd84a7a9;p=FUZIX.git Kernel: mbr: Fix bug when four primary partitions are present (also saves 15 bytes) --- diff --git a/Kernel/dev/mbr.c b/Kernel/dev/mbr.c index 3b78c43a..37247da5 100644 --- a/Kernel/dev/mbr.c +++ b/Kernel/dev/mbr.c @@ -23,7 +23,7 @@ typedef struct { void mbr_parse(blkdev_t *blk, char letter) { boot_record_t *br; - uint8_t i, maxbr = 50; + uint8_t i, seen = 0; uint32_t lba = 0, ep_offset = 0, br_offset = 0; uint8_t next = 0; @@ -35,10 +35,10 @@ void mbr_parse(blkdev_t *blk, char letter) break; /* avoid an infinite loop where extended boot records form a loop */ - if(--maxbr == 0) + if(seen >= 50) break; - if(next < 4 && lba != 0){ + if(seen == 1){ /* we just loaded the first extended boot record */ ep_offset = lba; next = 4; @@ -74,6 +74,7 @@ void mbr_parse(blkdev_t *blk, char letter) kprintf("hd%c%d ", letter, next); } } + seen++; }while(lba); if(next >= 4)