summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Vas Crabb <vas@vastheman.com>2020-10-10 00:00:42 +1100
committer Vas Crabb <vas@vastheman.com>2020-10-10 00:00:42 +1100
commit0590cd598a32e15b97eb1a8ad3303652822e79d8 (patch)
tree24aa6824d68ff1a7f5c3d01a87fdc725c76e6686
parentd5e8303a90c8d829e4d1905e24b0575939eb69b7 (diff)
formats/apridisk.cpp: Don't use megabytes of stack space.
-rw-r--r--src/devices/imagedev/floppy.cpp8
-rw-r--r--src/lib/formats/apridisk.cpp4
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);