formats/ap2_dsk.cpp: don't crash when loading a NIB file with an all-zero track (#12926)

* In this case, `levels` is empty, and `generate_track_from_levels` immediately
crashes with a division by zero. To fix this, just leave the track empty
instead.
This commit is contained in:
Roman Donchenko 2024-10-31 16:30:07 +02:00 committed by GitHub
parent 9b350a77d6
commit 0baa75775f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -1284,9 +1284,9 @@ bool a2_nib_format::load(util::random_read &io, uint32_t form_factor, const std:
for (unsigned track = 0; track < nr_tracks; ++track) {
/*auto const [err, actual] =*/ read_at(io, track * nibbles_per_track, &nibbles[0], nibbles_per_track); // FIXME: check for errors and premature EOF
auto levels = generate_levels_from_nibbles(nibbles);
generate_track_from_levels(track, 0,
levels,
0, image);
if (!levels.empty()) {
generate_track_from_levels(track, 0, levels, 0, image);
}
}
image.set_form_variant(floppy_image::FF_525, floppy_image::SSSD);