mirror of
https://github.com/holub/mame
synced 2025-07-05 01:48:29 +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 "osdcore.h"
|
||||||
#include "ioprocs.h"
|
#include "ioprocs.h"
|
||||||
#include "pool.h"
|
|
||||||
|
|
||||||
#include <cassert>
|
#include <cassert>
|
||||||
#include <cctype>
|
#include <cctype>
|
||||||
@ -31,22 +30,21 @@ using util::BIT;
|
|||||||
|
|
||||||
struct floppy_image_legacy
|
struct floppy_image_legacy
|
||||||
{
|
{
|
||||||
struct io_generic io;
|
struct io_generic io = { 0 };
|
||||||
|
|
||||||
const struct FloppyFormat *floppy_option;
|
const struct FloppyFormat *floppy_option = nullptr;
|
||||||
struct FloppyCallbacks format;
|
struct FloppyCallbacks format = { 0 };
|
||||||
|
|
||||||
/* loaded track stuff */
|
/* loaded track stuff */
|
||||||
int loaded_track_head;
|
int loaded_track_head = 0;
|
||||||
int loaded_track_index;
|
int loaded_track_index = 0;
|
||||||
uint32_t loaded_track_size;
|
uint32_t loaded_track_size = 0;
|
||||||
void *loaded_track_data;
|
std::unique_ptr<uint8_t[]> loaded_track_data;
|
||||||
uint8_t loaded_track_status;
|
uint8_t loaded_track_status = 0;
|
||||||
uint8_t flags;
|
uint8_t flags = 0;
|
||||||
|
|
||||||
/* tagging system */
|
/* tagging system */
|
||||||
object_pool *tags;
|
std::unique_ptr<uint8_t[]> tag_data;
|
||||||
void *tag_data;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -82,13 +80,8 @@ static floppy_image_legacy *floppy_init(void *fp, const struct io_procs *procs,
|
|||||||
{
|
{
|
||||||
floppy_image_legacy *floppy;
|
floppy_image_legacy *floppy;
|
||||||
|
|
||||||
floppy = (floppy_image_legacy *)malloc(sizeof(floppy_image_legacy));
|
floppy = new floppy_image_legacy;
|
||||||
if (!floppy)
|
|
||||||
return nullptr;
|
|
||||||
|
|
||||||
memset(floppy, 0, sizeof(*floppy));
|
|
||||||
floppy->tags = pool_alloc_lib(nullptr);
|
|
||||||
floppy->tag_data = nullptr;
|
|
||||||
floppy->io.file = fp;
|
floppy->io.file = fp;
|
||||||
floppy->io.procs = procs;
|
floppy->io.procs = procs;
|
||||||
floppy->io.filler = 0xFF;
|
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);
|
floppy->floppy_option->destruct(floppy, floppy->floppy_option);
|
||||||
if (close_file)
|
if (close_file)
|
||||||
io_generic_close(&floppy->io);
|
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)
|
void *floppy_tag(floppy_image_legacy *floppy)
|
||||||
{
|
{
|
||||||
assert(floppy);
|
assert(floppy);
|
||||||
return floppy->tag_data;
|
return floppy->tag_data.get();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void *floppy_create_tag(floppy_image_legacy *floppy, size_t tagsize)
|
void *floppy_create_tag(floppy_image_legacy *floppy, size_t tagsize)
|
||||||
{
|
{
|
||||||
floppy->tag_data = pool_malloc_lib(floppy->tags,tagsize);
|
floppy->tag_data = std::make_unique<uint8_t[]>(tagsize);
|
||||||
return floppy->tag_data;
|
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 floppy_load_track(floppy_image_legacy *floppy, int head, int track, int dirtify, void **track_data, size_t *track_length)
|
||||||
{
|
{
|
||||||
floperr_t err;
|
floperr_t err;
|
||||||
void *new_loaded_track_data;
|
|
||||||
uint32_t track_size;
|
uint32_t track_size;
|
||||||
|
|
||||||
/* have we already loaded this track? */
|
/* 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);
|
track_size = floppy_callbacks(floppy)->get_track_size(floppy, head, track);
|
||||||
|
|
||||||
if (floppy->loaded_track_data) free(floppy->loaded_track_data);
|
floppy->loaded_track_data = std::make_unique<uint8_t[]>(track_size);
|
||||||
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_size = track_size;
|
floppy->loaded_track_size = track_size;
|
||||||
floppy->loaded_track_head = head;
|
floppy->loaded_track_head = head;
|
||||||
floppy->loaded_track_index = track;
|
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)
|
if (err)
|
||||||
goto error;
|
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);
|
floppy->loaded_track_status |= (dirtify ? TRACK_DIRTY : 0);
|
||||||
|
|
||||||
if (track_data)
|
if (track_data)
|
||||||
*track_data = floppy->loaded_track_data;
|
*track_data = floppy->loaded_track_data.get();
|
||||||
if (track_length)
|
if (track_length)
|
||||||
*track_length = floppy->loaded_track_size;
|
*track_length = floppy->loaded_track_size;
|
||||||
return FLOPPY_ERROR_SUCCESS;
|
return FLOPPY_ERROR_SUCCESS;
|
||||||
@ -834,7 +815,7 @@ static floperr_t floppy_track_unload(floppy_image_legacy *floppy)
|
|||||||
int err;
|
int err;
|
||||||
if (floppy->loaded_track_status & TRACK_DIRTY)
|
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)
|
if (err)
|
||||||
return (floperr_t)err;
|
return (floperr_t)err;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user