mirror of
https://github.com/holub/mame
synced 2025-04-22 16:31:49 +03:00
formats/flopimg.cpp: Remove legacy pool allocator usage. (#8216)
This commit is contained in:
parent
b0628a92ec
commit
cbef832487
@ -13,7 +13,6 @@
|
||||
|
||||
#include "osdcore.h"
|
||||
#include "ioprocs.h"
|
||||
#include "pool.h"
|
||||
|
||||
#include <cassert>
|
||||
#include <cctype>
|
||||
@ -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<uint8_t[]> loaded_track_data;
|
||||
uint8_t loaded_track_status = 0;
|
||||
uint8_t flags = 0;
|
||||
|
||||
/* tagging system */
|
||||
object_pool *tags;
|
||||
void *tag_data;
|
||||
std::unique_ptr<uint8_t[]> 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<uint8_t[]>(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<uint8_t[]>(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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user