diff options
-rw-r--r-- | src/lib/formats/upd765_dsk.cpp | 13 | ||||
-rw-r--r-- | src/lib/formats/wd177x_dsk.cpp | 13 |
2 files changed, 14 insertions, 12 deletions
diff --git a/src/lib/formats/upd765_dsk.cpp b/src/lib/formats/upd765_dsk.cpp index 0538dc58010..e5f298ed8fd 100644 --- a/src/lib/formats/upd765_dsk.cpp +++ b/src/lib/formats/upd765_dsk.cpp @@ -418,13 +418,14 @@ void upd765_format::extract_sectors(floppy_image *image, const format &f, desc_s for(int i=0; i<f.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); } } diff --git a/src/lib/formats/wd177x_dsk.cpp b/src/lib/formats/wd177x_dsk.cpp index e89fe9b3f6e..2979d213933 100644 --- a/src/lib/formats/wd177x_dsk.cpp +++ b/src/lib/formats/wd177x_dsk.cpp @@ -492,13 +492,14 @@ void wd177x_format::extract_sectors(floppy_image *image, const format &f, desc_s for(int i=0; i<f.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); } } |