From cbef832487aba64ccea3c02e6187f47c37f7e80b Mon Sep 17 00:00:00 2001 From: Aaron Giles Date: Wed, 23 Jun 2021 07:28:40 -0700 Subject: formats/flopimg.cpp: Remove legacy pool allocator usage. (#8216) --- src/lib/formats/flopimg.cpp | 57 +++++++++++++++------------------------------ 1 file changed, 19 insertions(+), 38 deletions(-) diff --git a/src/lib/formats/flopimg.cpp b/src/lib/formats/flopimg.cpp index a7a4a6b2621..48c2fa1b610 100644 --- a/src/lib/formats/flopimg.cpp +++ b/src/lib/formats/flopimg.cpp @@ -13,7 +13,6 @@ #include "osdcore.h" #include "ioprocs.h" -#include "pool.h" #include #include @@ -31,22 +30,21 @@ using util::BIT; struct floppy_image_legacy { - struct io_generic io; + struct io_generic io = { 0 }; - const struct FloppyFormat *floppy_option; - struct FloppyCallbacks format; + const struct FloppyFormat *floppy_option = nullptr; + struct FloppyCallbacks format = { 0 }; /* loaded track stuff */ - int loaded_track_head; - int loaded_track_index; - uint32_t loaded_track_size; - void *loaded_track_data; - uint8_t loaded_track_status; - uint8_t flags; + int loaded_track_head = 0; + int loaded_track_index = 0; + uint32_t loaded_track_size = 0; + std::unique_ptr loaded_track_data; + uint8_t loaded_track_status = 0; + uint8_t flags = 0; /* tagging system */ - object_pool *tags; - void *tag_data; + std::unique_ptr tag_data; }; @@ -82,13 +80,8 @@ static floppy_image_legacy *floppy_init(void *fp, const struct io_procs *procs, { floppy_image_legacy *floppy; - floppy = (floppy_image_legacy *)malloc(sizeof(floppy_image_legacy)); - if (!floppy) - return nullptr; + floppy = new floppy_image_legacy; - memset(floppy, 0, sizeof(*floppy)); - floppy->tags = pool_alloc_lib(nullptr); - floppy->tag_data = nullptr; floppy->io.file = fp; floppy->io.procs = procs; floppy->io.filler = 0xFF; @@ -295,11 +288,8 @@ static void floppy_close_internal(floppy_image_legacy *floppy, bool close_file) floppy->floppy_option->destruct(floppy, floppy->floppy_option); if (close_file) io_generic_close(&floppy->io); - if (floppy->loaded_track_data) - free(floppy->loaded_track_data); - pool_free_lib(floppy->tags); - free(floppy); + delete floppy; } } @@ -327,15 +317,15 @@ struct FloppyCallbacks *floppy_callbacks(floppy_image_legacy *floppy) void *floppy_tag(floppy_image_legacy *floppy) { assert(floppy); - return floppy->tag_data; + return floppy->tag_data.get(); } void *floppy_create_tag(floppy_image_legacy *floppy, size_t tagsize) { - floppy->tag_data = pool_malloc_lib(floppy->tags,tagsize); - return floppy->tag_data; + floppy->tag_data = std::make_unique(tagsize); + return floppy->tag_data.get(); } @@ -779,7 +769,6 @@ uint8_t floppy_random_byte(floppy_image_legacy *floppy) floperr_t floppy_load_track(floppy_image_legacy *floppy, int head, int track, int dirtify, void **track_data, size_t *track_length) { floperr_t err; - void *new_loaded_track_data; uint32_t track_size; /* have we already loaded this track? */ @@ -791,20 +780,12 @@ floperr_t floppy_load_track(floppy_image_legacy *floppy, int head, int track, in track_size = floppy_callbacks(floppy)->get_track_size(floppy, head, track); - if (floppy->loaded_track_data) free(floppy->loaded_track_data); - new_loaded_track_data = malloc(track_size); - if (!new_loaded_track_data) - { - err = FLOPPY_ERROR_OUTOFMEMORY; - goto error; - } - - floppy->loaded_track_data = new_loaded_track_data; + floppy->loaded_track_data = std::make_unique(track_size); floppy->loaded_track_size = track_size; floppy->loaded_track_head = head; floppy->loaded_track_index = track; - err = floppy_callbacks(floppy)->read_track(floppy, floppy->loaded_track_head, floppy->loaded_track_index, 0, floppy->loaded_track_data, floppy->loaded_track_size); + err = floppy_callbacks(floppy)->read_track(floppy, floppy->loaded_track_head, floppy->loaded_track_index, 0, floppy->loaded_track_data.get(), floppy->loaded_track_size); if (err) goto error; @@ -814,7 +795,7 @@ floperr_t floppy_load_track(floppy_image_legacy *floppy, int head, int track, in floppy->loaded_track_status |= (dirtify ? TRACK_DIRTY : 0); if (track_data) - *track_data = floppy->loaded_track_data; + *track_data = floppy->loaded_track_data.get(); if (track_length) *track_length = floppy->loaded_track_size; return FLOPPY_ERROR_SUCCESS; @@ -834,7 +815,7 @@ static floperr_t floppy_track_unload(floppy_image_legacy *floppy) int err; if (floppy->loaded_track_status & TRACK_DIRTY) { - err = floppy_callbacks(floppy)->write_track(floppy, floppy->loaded_track_head, floppy->loaded_track_index, 0, floppy->loaded_track_data, floppy->loaded_track_size); + err = floppy_callbacks(floppy)->write_track(floppy, floppy->loaded_track_head, floppy->loaded_track_index, 0, floppy->loaded_track_data.get(), floppy->loaded_track_size); if (err) return (floperr_t)err; } -- cgit v1.2.3