From 0baa75775f56885ee96fba928c17adc4a21e5e0b Mon Sep 17 00:00:00 2001 From: Roman Donchenko Date: Thu, 31 Oct 2024 16:30:07 +0200 Subject: 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. --- src/lib/formats/ap2_dsk.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/lib/formats/ap2_dsk.cpp b/src/lib/formats/ap2_dsk.cpp index 9e8afc18c2a..92c8b999965 100644 --- a/src/lib/formats/ap2_dsk.cpp +++ b/src/lib/formats/ap2_dsk.cpp @@ -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); -- cgit v1.2.3