diff options
author | Olivier Galibert <galibert@pobox.com> | 2021-03-30 14:23:52 +0200 |
---|---|---|
committer | Olivier Galibert <galibert@pobox.com> | 2021-03-30 14:24:14 +0200 |
commit | 2180679a35a04dfcba706d345c6bcb6776579902 (patch) | |
tree | 707e05a4155287e8bf024ade713376d95e341228 | |
parent | ce764cb094ebf3617c4bd0997ec0e5f173a10acd (diff) |
d64: update following sector extraction evolution
-rw-r--r-- | src/lib/formats/d64_dsk.cpp | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/src/lib/formats/d64_dsk.cpp b/src/lib/formats/d64_dsk.cpp index 70c85b039d6..4819ecc68d2 100644 --- a/src/lib/formats/d64_dsk.cpp +++ b/src/lib/formats/d64_dsk.cpp @@ -298,14 +298,15 @@ void d64_format::extract_sectors(floppy_image *image, const format &f, desc_s *s for(int i=0; i<sector_count; i++) { desc_s &ds = sdesc[i]; - const auto &data = sectors[ds.sector_id]; - if(data.empty()) + if(ds.sector_id >= sectors.size() || sectors[ds.sector_id].empty()) memset((void *)ds.data, 0, ds.size); - else if(data.size() < ds.size) { - memcpy((void *)ds.data, data.data(), data.size()); - memset((uint8_t *)ds.data + data.size(), 0, data.size() - ds.size); + + else if(sectors[ds.sector_id].size() < ds.size) { + memcpy((void *)ds.data, sectors[ds.sector_id].data(), sectors[ds.sector_id].size()); + memset((uint8_t *)ds.data + sectors[ds.sector_id].size(), 0, sectors[ds.sector_id].size() - ds.size); + } else - memcpy((void *)ds.data, data.data(), ds.size); + memcpy((void *)ds.data, sectors[ds.sector_id].data(), ds.size); } } |