diff options
author | Michal Soltys <soltys@ziu.info> | 2010-08-17 11:09:45 +0200 |
---|---|---|
committer | Michal Soltys <soltys@ziu.info> | 2010-08-22 23:45:15 +0200 |
commit | 2b3522cb5f3aa32e0377510f029c23e16ae68328 (patch) | |
tree | 97b4f10d93ebe640f905c643c2bb78b6082f499f /com32/chain/chain.c | |
parent | d4d713c9ccfe08bf5e129a398d4f2a313b7ffe62 (diff) | |
download | syslinux-2b3522cb5f3aa32e0377510f029c23e16ae68328.tar.gz |
chain, partiter: bugfixes
Signed-off-by: Michal Soltys <soltys@ziu.info>
Diffstat (limited to 'com32/chain/chain.c')
-rw-r--r-- | com32/chain/chain.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/com32/chain/chain.c b/com32/chain/chain.c index 6c11a4d1..9c73291d 100644 --- a/com32/chain/chain.c +++ b/com32/chain/chain.c @@ -697,6 +697,10 @@ int find_dp(struct part_iter **_iter) if (iter->index == partition) break; } while (pi_next(&iter)); + if (!iter) { + error("Requested disk / partition combination not found.\n"); + goto bail; + } } if (!(iter->di.disk & 0x80) && iter->index) { @@ -1118,6 +1122,7 @@ int main(int argc, char *argv[]) data[ndata].data = (void *)hand_area; ndata++; opt.regs.esi.w[0] = 0x7be; + #ifdef DEBUG dprintf("MBR handover:\n"); disk_dos_part_dump(hand_area); @@ -1125,6 +1130,13 @@ int main(int argc, char *argv[]) } } +#ifdef DEBUG + printf("iter dsk: %d\n", iter->di.disk); + printf("iter idx: %d\n", iter->index); + printf("iter lba: %llu\n", iter->start_lba); + if (hand_area) + printf("hand lba: %u\n", hand_area->start_lba); +#endif do_boot(data, ndata); bail: |