summaryrefslogtreecommitdiff
path: root/com32/chain/chain.c
diff options
context:
space:
mode:
authorMichal Soltys <soltys@ziu.info>2010-08-17 11:09:45 +0200
committerMichal Soltys <soltys@ziu.info>2010-08-22 23:45:15 +0200
commit2b3522cb5f3aa32e0377510f029c23e16ae68328 (patch)
tree97b4f10d93ebe640f905c643c2bb78b6082f499f /com32/chain/chain.c
parentd4d713c9ccfe08bf5e129a398d4f2a313b7ffe62 (diff)
downloadsyslinux-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.c12
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: