Fixed the second batch of problems
This commit is contained in:
@@ -401,7 +401,7 @@ mfm_load(int drive, wchar_t *fn)
|
||||
{
|
||||
mfm_t *dev;
|
||||
double dbr;
|
||||
int i;
|
||||
int i, size;
|
||||
|
||||
writeprot[drive] = fwriteprot[drive] = 1;
|
||||
|
||||
@@ -419,16 +419,22 @@ mfm_load(int drive, wchar_t *fn)
|
||||
d86f_unregister(drive);
|
||||
|
||||
/* Read the header. */
|
||||
fread(&dev->hdr, 1, sizeof(mfm_header_t), dev->f);
|
||||
size = sizeof(mfm_header_t);
|
||||
if (fread(&dev->hdr, 1, size, dev->f) != size)
|
||||
fatal("mfm_load(): Error reading header\n");
|
||||
|
||||
/* Calculate tracks * sides, allocate the tracks array, and read it. */
|
||||
dev->total_tracks = dev->hdr.tracks_no * dev->hdr.sides_no;
|
||||
if (dev->hdr.if_type & 0x80) {
|
||||
dev->adv_tracks = (mfm_adv_track_t *) malloc(dev->total_tracks * sizeof(mfm_adv_track_t));
|
||||
fread(dev->adv_tracks, 1, dev->total_tracks * sizeof(mfm_adv_track_t), dev->f);
|
||||
size = dev->total_tracks * sizeof(mfm_adv_track_t);
|
||||
if (fread(dev->adv_tracks, 1, size, dev->f) != size)
|
||||
fatal("mfm_load(): Error reading advanced tracks\n");
|
||||
} else {
|
||||
dev->tracks = (mfm_track_t *) malloc(dev->total_tracks * sizeof(mfm_track_t));
|
||||
fread(dev->tracks, 1, dev->total_tracks * sizeof(mfm_track_t), dev->f);
|
||||
size = dev->total_tracks * sizeof(mfm_track_t);
|
||||
if (fread(dev->tracks, 1, size, dev->f) != size)
|
||||
fatal("mfm_load(): Error reading tracks\n");
|
||||
}
|
||||
|
||||
/* The chances of finding a HxC MFM image of a single-sided thin track
|
||||
|
||||
Reference in New Issue
Block a user