From a95725f81b6e8f0eeca27a97485f9f04d3f446da Mon Sep 17 00:00:00 2001 From: tim lindner Date: Sun, 6 Jun 2021 15:03:17 -0700 Subject: wd177x: remove tests for head count. add track count test in check_compatibility() becuase it will segfault if disk drive doesn't have enough tracks --- src/lib/formats/wd177x_dsk.cpp | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/lib/formats/wd177x_dsk.cpp b/src/lib/formats/wd177x_dsk.cpp index bb9cc1da3a1..22309f32a12 100644 --- a/src/lib/formats/wd177x_dsk.cpp +++ b/src/lib/formats/wd177x_dsk.cpp @@ -212,11 +212,6 @@ bool wd177x_format::load(io_generic *io, uint32_t form_factor, const std::vector return false; } - if(f.head_count > max_heads) { - osd_printf_error("wd177x_format: Number of sides in image file too high for floppy drive (%d > %d)\n", f.track_count, max_heads); - return false; - } - for(int track=0; track < f.track_count; track++) for(int head=0; head < f.head_count; head++) { uint8_t sectdata[40*512]; @@ -433,6 +428,15 @@ void wd177x_format::check_compatibility(floppy_image *image, std::vector &c int *ok_cands = &candidates[0]; for(unsigned int i=0; i < candidates.size(); i++) { const format &f = formats[candidates[i]]; + + int max_tracks, max_heads; + image->get_maximal_geometry(max_tracks, max_heads); + + // Fail if floppy drive can't handle track count + if(f.track_count > max_tracks) { + goto fail; + } + for(int track=0; track < f.track_count; track++) { for(int head=0; head < f.head_count; head++) { const format &tf = get_track_format(f, head, track); -- cgit v1.2.3