diff options
author | 2020-10-10 00:00:42 +1100 | |
---|---|---|
committer | 2020-10-10 00:00:42 +1100 | |
commit | 0590cd598a32e15b97eb1a8ad3303652822e79d8 (patch) | |
tree | 24aa6824d68ff1a7f5c3d01a87fdc725c76e6686 | |
parent | d5e8303a90c8d829e4d1905e24b0575939eb69b7 (diff) |
formats/apridisk.cpp: Don't use megabytes of stack space.
-rw-r--r-- | src/devices/imagedev/floppy.cpp | 8 | ||||
-rw-r--r-- | src/lib/formats/apridisk.cpp | 4 |
2 files changed, 5 insertions, 7 deletions
diff --git a/src/devices/imagedev/floppy.cpp b/src/devices/imagedev/floppy.cpp index fc4631199d8..cf3ffefd524 100644 --- a/src/devices/imagedev/floppy.cpp +++ b/src/devices/imagedev/floppy.cpp @@ -459,7 +459,7 @@ image_init_result floppy_image_device::call_load() io.filler = 0xff; int best = 0; floppy_image_format_t *best_format = nullptr; - for(floppy_image_format_t *format = fif_list; format; format = format->next) { + for (floppy_image_format_t *format = fif_list; format; format = format->next) { int score = format->identify(&io, form_factor); if(score > best) { best = score; @@ -467,15 +467,13 @@ image_init_result floppy_image_device::call_load() } } - if(!best_format) - { + if (!best_format) { seterror(IMAGE_ERROR_INVALIDIMAGE, "Unable to identify the image format"); return image_init_result::FAIL; } image = std::make_unique<floppy_image>(tracks, sides, form_factor); - if (!best_format->load(&io, form_factor, image.get())) - { + if (!best_format->load(&io, form_factor, image.get())) { seterror(IMAGE_ERROR_UNSUPPORTED, "Incompatible image format or corrupted data"); image.reset(); return image_init_result::FAIL; diff --git a/src/lib/formats/apridisk.cpp b/src/lib/formats/apridisk.cpp index bb53006f188..aad688167cf 100644 --- a/src/lib/formats/apridisk.cpp +++ b/src/lib/formats/apridisk.cpp @@ -48,8 +48,8 @@ int apridisk_format::identify(io_generic *io, uint32_t form_factor) bool apridisk_format::load(io_generic *io, uint32_t form_factor, floppy_image *image) { desc_pc_sector sectors[80][2][18]; - uint8_t sector_data[MAX_SECTORS * SECTOR_SIZE]; - uint8_t *data_ptr = sector_data; + std::unique_ptr<uint8_t []> sector_data(new uint8_t [MAX_SECTORS * SECTOR_SIZE]); + uint8_t *data_ptr = sector_data.get(); int track_count = 0, head_count = 0, sector_count = 0; uint64_t file_size = io_generic_size(io); |