diff --git a/src/lib/formats/cassimg.c b/src/lib/formats/cassimg.c index 0b428272ed5..b7f1ea68ccd 100644 --- a/src/lib/formats/cassimg.c +++ b/src/lib/formats/cassimg.c @@ -855,9 +855,9 @@ casserr_t cassette_legacy_construct(cassette_image *cassette, casserr_t err; int length; int sample_count; - void *bytes = NULL; - void *chunk = NULL; - INT16 *samples = NULL; + dynamic_buffer bytes; + dynamic_buffer chunk; + dynamic_array samples; int pos = 0; UINT64 offset = 0; UINT64 size; @@ -880,12 +880,7 @@ casserr_t cassette_legacy_construct(cassette_image *cassette, args.sample_frequency = 11025; /* allocate a buffer for the binary data */ - chunk = malloc(args.chunk_size); - if (!chunk) - { - err = CASSETTE_ERROR_OUTOFMEMORY; - goto done; - } + chunk.resize(args.chunk_size); /* determine number of samples */ if (args.chunk_sample_calc) @@ -896,14 +891,9 @@ casserr_t cassette_legacy_construct(cassette_image *cassette, goto done; } - bytes = malloc(size); - if (!bytes) - { - err = CASSETTE_ERROR_OUTOFMEMORY; - goto done; - } + bytes.resize(size); cassette_image_read(cassette, bytes, 0, size); - sample_count = args.chunk_sample_calc((const UINT8*)bytes, (int) size); + sample_count = args.chunk_sample_calc(bytes, (int)size); if (args.header_samples < 0) args.header_samples = sample_count; @@ -916,12 +906,7 @@ casserr_t cassette_legacy_construct(cassette_image *cassette, sample_count += args.header_samples + args.trailer_samples; /* allocate a buffer for the completed samples */ - samples = (INT16*)malloc(sample_count * sizeof(*samples)); - if (!samples) - { - err = CASSETTE_ERROR_OUTOFMEMORY; - goto done; - } + samples.resize(sample_count); /* if there has to be a header */ if (args.header_samples > 0) @@ -941,7 +926,7 @@ casserr_t cassette_legacy_construct(cassette_image *cassette, cassette_image_read(cassette, chunk, offset, args.chunk_size); offset += args.chunk_size; - length = args.fill_wave(samples + pos, sample_count - pos, (UINT8*)chunk); + length = args.fill_wave(samples + pos, sample_count - pos, chunk); if (length < 0) { err = CASSETTE_ERROR_INVALIDIMAGE; @@ -978,12 +963,6 @@ casserr_t cassette_legacy_construct(cassette_image *cassette, #endif done: - if (samples) - free(samples); - if (chunk) - free(chunk); - if (bytes) - free(bytes); return err; } diff --git a/src/lib/formats/coco_dsk.c b/src/lib/formats/coco_dsk.c index 2ab89bae312..d781e89770d 100644 --- a/src/lib/formats/coco_dsk.c +++ b/src/lib/formats/coco_dsk.c @@ -13,6 +13,7 @@ #include "formats/coco_dsk.h" #include "formats/basicdsk.h" #include "imageutl.h" +#include "coretmpl.h" /* ----------------------------------------------------------------------- * JVC (Jeff Vavasour CoCo) format @@ -719,7 +720,7 @@ static floperr_t coco_dmk_format_track(floppy_image_legacy *floppy, int head, in UINT8 *track_data; void *track_data_v; UINT32 max_track_size; - int *sector_map = NULL; + dynamic_array sector_map; sectors = option_resolution_lookup_int(params, PARAM_SECTORS); sector_length = option_resolution_lookup_int(params, PARAM_SECTOR_LENGTH); @@ -746,13 +747,8 @@ static floperr_t coco_dmk_format_track(floppy_image_legacy *floppy, int head, in track_data = (UINT8 *) track_data_v; /* set up sector map */ - sector_map = (int*)malloc(sectors * sizeof(*sector_map)); - if (!sector_map) - { - err = FLOPPY_ERROR_OUTOFMEMORY; - goto done; - } - memset(sector_map, 0xFF, sectors * sizeof(*sector_map)); + sector_map.resize(sectors); + sector_map.clear(0xFF); physical_sector = 0; for (logical_sector = 0; logical_sector < sectors; logical_sector++) @@ -837,8 +833,6 @@ static floperr_t coco_dmk_format_track(floppy_image_legacy *floppy, int head, in memset(&track_data[track_position], 0x4e, max_track_size - track_position); done: - if (sector_map) - free(sector_map); return err; } diff --git a/src/lib/formats/csw_cas.c b/src/lib/formats/csw_cas.c index c587a9c087e..f7b542fd1bb 100644 --- a/src/lib/formats/csw_cas.c +++ b/src/lib/formats/csw_cas.c @@ -49,7 +49,7 @@ static int csw_cas_to_wav_size( const UINT8 *casdata, int caslen ) UINT8 CompressionType; UINT8 Flags; UINT8 HeaderExtensionLength; - UINT8 *gz_ptr = NULL; + dynamic_buffer gz_ptr; int total_size; z_stream d_stream; @@ -97,8 +97,7 @@ static int csw_cas_to_wav_size( const UINT8 *casdata, int caslen ) //from here on down for now I am assuming it is compressed csw file. in_ptr = (UINT8*) casdata+0x34+HeaderExtensionLength; - gz_ptr = (UINT8*)malloc( 8 ); - + gz_ptr.resize( 8 ); d_stream.next_in = (unsigned char *)in_ptr; d_stream.avail_in = caslen - ( in_ptr - casdata ); @@ -155,20 +154,9 @@ static int csw_cas_to_wav_size( const UINT8 *casdata, int caslen ) goto cleanup; } - if ( gz_ptr ) - { - free( gz_ptr ); - gz_ptr = NULL; - } - return total_size; cleanup: - if ( gz_ptr ) - { - free( gz_ptr ); - gz_ptr = NULL; - } return -1; } @@ -181,7 +169,7 @@ static int csw_cas_fill_wave( INT16 *buffer, int length, UINT8 *bytes ) UINT8 HeaderExtensionLength; INT8 Bit; - UINT8 *gz_ptr = NULL; + dynamic_buffer gz_ptr; int total_size; z_stream d_stream; int err; @@ -217,7 +205,7 @@ static int csw_cas_fill_wave( INT16 *buffer, int length, UINT8 *bytes ) //from here on down for now I am assuming it is compressed csw file. in_ptr = (UINT8*) bytes+0x34+HeaderExtensionLength; - gz_ptr = (UINT8*)malloc( 8 ); + gz_ptr.resize( 8 ); d_stream.next_in = (unsigned char *)in_ptr; d_stream.avail_in = mycaslen - ( in_ptr - bytes ); @@ -278,20 +266,9 @@ static int csw_cas_fill_wave( INT16 *buffer, int length, UINT8 *bytes ) goto cleanup; } - if ( gz_ptr ) - { - free( gz_ptr ); - gz_ptr = NULL; - } - return length; cleanup: - if ( gz_ptr ) - { - free( gz_ptr ); - gz_ptr = NULL; - } return -1; } diff --git a/src/lib/formats/kc_cas.c b/src/lib/formats/kc_cas.c index 7d98a1bf53c..9198a98c4d5 100644 --- a/src/lib/formats/kc_cas.c +++ b/src/lib/formats/kc_cas.c @@ -210,7 +210,7 @@ static int kc_handle_tap(INT16 *buffer, const UINT8 *casdata) static int kc_handle_sss(INT16 *buffer, const UINT8 *casdata) { - UINT8 *sss = (UINT8*)malloc(kc_image_size + 11); + dynamic_buffer sss(kc_image_size + 11); // tries to generate the missing head memset(sss + 0, 0xd3, 3); @@ -222,8 +222,6 @@ static int kc_handle_sss(INT16 *buffer, const UINT8 *casdata) int retval = kc_handle_cass(buffer, sss, KC_IMAGE_KCC); - free(sss); - return retval; } diff --git a/src/lib/formats/ti99_dsk.c b/src/lib/formats/ti99_dsk.c index a80c3d84594..b1b8cec589b 100644 --- a/src/lib/formats/ti99_dsk.c +++ b/src/lib/formats/ti99_dsk.c @@ -1647,9 +1647,8 @@ static floperr_t ti99_sdf_write_track(floppy_image_legacy *floppy, int head, int */ /* static floperr_t ti99_sdf_format_track(floppy_image_legacy *floppy, int head, int track, option_resolution *params) { - UINT8 *sector0 = (UINT8*)malloc(SECTOR_SIZE); + dynamic_buffer sector0(SECTOR_SIZE); create_vib(sector0, params); - free(sector0); if (true) { printf("not implemented\n"); @@ -2297,11 +2296,9 @@ static floperr_t ti99_tdf_read_sector(floppy_image_legacy *floppy, int head, int { floperr_t err; UINT8 *sector_data; - UINT8 *track_data; int imgtrack = track; struct ti99dsk_tag *tag = (ti99dsk_tag*)floppy_tag(floppy); - - track_data = (UINT8*)malloc(tag->track_size); + dynamic_buffer track_data(tag->track_size); if (use_80_track_drives && tag->tracks<=40) { @@ -2318,7 +2315,6 @@ static floperr_t ti99_tdf_read_sector(floppy_image_legacy *floppy, int head, int /* verify CRC? */ memcpy(buffer, sector_data, SECTOR_SIZE); - free(track_data); return FLOPPY_ERROR_SUCCESS; } @@ -2376,7 +2372,7 @@ static floperr_t ti99_tdf_write_indexed_sector(floppy_image_legacy *floppy, int /* Read track, head */ int byte; struct ti99dsk_tag *tag = (ti99dsk_tag*)floppy_tag(floppy); - UINT8 *track_data; + dynamic_buffer track_data(tag->track_size); UINT8 *sector_data; UINT64 track_offset; UINT64 offset; @@ -2388,8 +2384,6 @@ static floperr_t ti99_tdf_write_indexed_sector(floppy_image_legacy *floppy, int int i; floperr_t err; - track_data = (UINT8*)malloc(tag->track_size); - if (use_80_track_drives && tag->tracks<=40) { imgtrack = track / 2; @@ -2398,7 +2392,6 @@ static floperr_t ti99_tdf_write_indexed_sector(floppy_image_legacy *floppy, int err = ti99_tdf_read_track_internal(floppy, head, imgtrack, 0, track_data, tag->track_size); if (err) { - free(track_data); return err; } @@ -2407,7 +2400,6 @@ static floperr_t ti99_tdf_write_indexed_sector(floppy_image_legacy *floppy, int { if (determine_offset(tag->format, track_data, &tag->first_idam)==FLOPPY_ERROR_SEEKERROR) { - free(track_data); return FLOPPY_ERROR_SEEKERROR; } } @@ -2428,7 +2420,6 @@ static floperr_t ti99_tdf_write_indexed_sector(floppy_image_legacy *floppy, int /* Not that many sectors in this track? */ if (sector_index>0) { - free(track_data); return FLOPPY_ERROR_SEEKERROR; } @@ -2445,7 +2436,6 @@ static floperr_t ti99_tdf_write_indexed_sector(floppy_image_legacy *floppy, int /* There was no DAM. Image seems to be broken. */ if (i == tag->track_size) { - free(track_data); return FLOPPY_ERROR_SEEKERROR; } @@ -2469,9 +2459,6 @@ static floperr_t ti99_tdf_write_indexed_sector(floppy_image_legacy *floppy, int crc_field[1] = (crc & 0xff); floppy_image_write(floppy, crc_field, offset+SECTOR_SIZE, 2); - /* Free the temporary buffer */ - free(track_data); - return FLOPPY_ERROR_SUCCESS; } @@ -2481,12 +2468,11 @@ static floperr_t ti99_tdf_find_indexed_sector(floppy_image_legacy *floppy, int h /* Read track, head */ int byte = 0; struct ti99dsk_tag *tag = (ti99dsk_tag*)floppy_tag(floppy); - UINT8 *track_data; + dynamic_buffer track_data(tag->track_size); int imgtrack = track; int i; floperr_t err; floperr_t retval; - track_data = (UINT8*)malloc(tag->track_size); if (use_80_track_drives && tag->tracks<=40) { @@ -2496,7 +2482,6 @@ static floperr_t ti99_tdf_find_indexed_sector(floppy_image_legacy *floppy, int h err = ti99_tdf_read_track_internal(floppy, head, imgtrack, 0, track_data, tag->track_size); if (err) { - free(track_data); return err; } @@ -2506,7 +2491,6 @@ static floperr_t ti99_tdf_find_indexed_sector(floppy_image_legacy *floppy, int h { if (determine_offset(tag->format, track_data, &tag->first_idam)==FLOPPY_ERROR_SEEKERROR) { - free(track_data); return FLOPPY_ERROR_SEEKERROR; } } @@ -2572,7 +2556,6 @@ static floperr_t ti99_tdf_find_indexed_sector(floppy_image_legacy *floppy, int h } } } - free(track_data); return retval; } @@ -2626,7 +2609,8 @@ static int ti99_tdf_guess_geometry(floppy_image_legacy *floppy, UINT64 size, { int idamcnt, state, track, head, i, totalseclen = 0, format = 0, byte, tracklength, trackadd = 0; int first_idam = 0; - UINT8 *track_data; + /* Allocate enough bytes to hold the longest supported track. */ + dynamic_buffer track_data(13000); /*int offset;*/ struct ti99dsk_geometry dummy_geometry; @@ -2636,8 +2620,6 @@ static int ti99_tdf_guess_geometry(floppy_image_legacy *floppy, UINT64 size, else geometry = &dummy_geometry; - /* Allocate enough bytes to hold the longest supported track. */ - track_data = (UINT8*)malloc(13000); floppy_image_read(floppy, track_data, 0, 13000); if (determine_offset(TI99_MFM, track_data, &first_idam)==FLOPPY_ERROR_SEEKERROR) @@ -2652,7 +2634,6 @@ static int ti99_tdf_guess_geometry(floppy_image_legacy *floppy, UINT64 size, // We only give a moderate vote in this case, so SDF // make take it. - free(track_data); if (size < 130120 || size > 2078720) { LOG_FORMATS("Unknown format size: %d\n", (int)size); @@ -2794,7 +2775,6 @@ static int ti99_tdf_guess_geometry(floppy_image_legacy *floppy, UINT64 size, { /* error ... what now? */ LOG_FORMATS("Error when reading last track. Image broken.\n"); - free(track_data); return 50; } else @@ -2824,11 +2804,9 @@ static int ti99_tdf_guess_geometry(floppy_image_legacy *floppy, UINT64 size, if (geometry->tracksperside < 35 || geometry->tracksperside > 80) { LOG_FORMATS("Unsupported track count: %d\n", geometry->tracksperside); - free(track_data); return 0; } - free(track_data); return 100; } diff --git a/src/lib/formats/z80ne_dsk.c b/src/lib/formats/z80ne_dsk.c index cc1d1901a31..0c408c987c2 100644 --- a/src/lib/formats/z80ne_dsk.c +++ b/src/lib/formats/z80ne_dsk.c @@ -10,6 +10,7 @@ #include "z80ne_dsk.h" #include "basicdsk.h" #include "imageutl.h" +#include "coretmpl.h" /* ----------------------------------------------------------------------- * DMK file format @@ -175,8 +176,8 @@ static floperr_t z80ne_dmk_format_track(floppy_image_legacy *floppy, int head, i UINT8 *track_data; void *track_data_v; UINT32 max_track_size; - int *sector_map = NULL; - UINT8 *local_sector = NULL; + dynamic_array sector_map; + dynamic_buffer local_sector; int local_sector_size; int sector_position; int i; @@ -206,13 +207,8 @@ static floperr_t z80ne_dmk_format_track(floppy_image_legacy *floppy, int head, i track_data = (UINT8 *) track_data_v; /* set up sector map */ - sector_map = (int*)malloc(sectors * sizeof(*sector_map)); - if (!sector_map) - { - err = FLOPPY_ERROR_OUTOFMEMORY; - goto done; - } - memset(sector_map, 0xFF, sectors * sizeof(*sector_map)); + sector_map.resize(sectors); + sector_map.clear(0xFF); physical_sector = 0; for (logical_sector = 0; logical_sector < sectors; logical_sector++) @@ -235,13 +231,8 @@ static floperr_t z80ne_dmk_format_track(floppy_image_legacy *floppy, int head, i sector_length + DMK_DATA_CRC_LEN + DMK_DATA_GAP_LEN); - local_sector = (UINT8*)malloc(local_sector_size); - if (!local_sector) - { - err = FLOPPY_ERROR_OUTOFMEMORY; - goto done; - } - memset(local_sector, 0x00, local_sector_size); + local_sector.resize(local_sector_size); + local_sector.clear(); /* set up track table of contents */ physical_sector = 0; @@ -326,11 +317,6 @@ static floperr_t z80ne_dmk_format_track(floppy_image_legacy *floppy, int head, i memset(&track_data[track_position], 0xFF, max_track_size - track_position); done: - if (sector_map) - free(sector_map); - if (local_sector) - free(local_sector); - return err; } @@ -392,7 +378,7 @@ static floperr_t z80ne_dmk_seek_sector_in_track(floppy_image_legacy *floppy, int void *track_data_v; size_t track_length; size_t sec_len; - UINT8 *local_idam = NULL; + dynamic_buffer local_idam; int local_idam_size; UINT8 *sec_data; @@ -406,13 +392,8 @@ static floperr_t z80ne_dmk_seek_sector_in_track(floppy_image_legacy *floppy, int DMK_ID_GAP_LEN + DMK_DAM_LEN + DMK_DATA_GAP_LEN); - local_idam = (UINT8*)malloc(local_idam_size); - if (!local_idam) - { - err = FLOPPY_ERROR_OUTOFMEMORY; - goto done; - } - memset(local_idam, 0x00, local_idam_size); + local_idam.resize(local_idam_size); + local_idam.clear(); /* search for matching IDAM */ for (i = 0; i < DMK_TOC_LEN / 2; i++) @@ -509,8 +490,6 @@ static floperr_t z80ne_dmk_seek_sector_in_track(floppy_image_legacy *floppy, int if (sector_length) *sector_length = sec_len; done: - if (local_idam) - free(local_idam); return err; } @@ -582,7 +561,7 @@ static floperr_t internal_z80ne_dmk_read_sector(floppy_image_legacy *floppy, int UINT16 crc_on_disk; UINT16 calculated_crc; UINT8 *sector_data = NULL; - UINT8 *local_sector = NULL; + dynamic_buffer local_sector; int local_sector_size; int i; @@ -593,13 +572,8 @@ static floperr_t internal_z80ne_dmk_read_sector(floppy_image_legacy *floppy, int /* set up a local physical sector space (DAM + data + crc + GAP) */ local_sector_size = (DMK_DAM_LEN + sector_length + DMK_DATA_CRC_LEN + DMK_DATA_GAP_LEN); - local_sector = (UINT8*)malloc(local_sector_size); - if (!local_sector) - { - err = FLOPPY_ERROR_OUTOFMEMORY; - goto done; - } - memset(local_sector, 0x00, local_sector_size); + local_sector.resize(local_sector_size); + local_sector.clear(); /* get sector data */ /* create a local copy of sector data including DAM (for crc calculation) */ @@ -622,8 +596,6 @@ static floperr_t internal_z80ne_dmk_read_sector(floppy_image_legacy *floppy, int memcpy(buffer, local_sector+1, MIN(sector_length, buflen)); done: - if (local_sector) - free(local_sector); return err; } @@ -635,7 +607,7 @@ static floperr_t internal_z80ne_dmk_write_sector(floppy_image_legacy *floppy, in UINT32 sector_length; UINT8 *sector_data; UINT16 crc; - UINT8 *local_sector = NULL; + dynamic_buffer local_sector; int local_sector_size; int i; @@ -646,13 +618,8 @@ static floperr_t internal_z80ne_dmk_write_sector(floppy_image_legacy *floppy, in /* set up a local physical sector space */ local_sector_size = (DMK_DAM_LEN + sector_length + DMK_DATA_CRC_LEN + DMK_DATA_GAP_LEN); - local_sector = (UINT8*)malloc(local_sector_size); - if (!local_sector) - { - err = FLOPPY_ERROR_OUTOFMEMORY; - goto done; - } - memset(local_sector, 0x00, local_sector_size); + local_sector.resize(local_sector_size); + local_sector.clear(); if(!ddam) local_sector[0] = 0xFB; else @@ -677,8 +644,6 @@ static floperr_t internal_z80ne_dmk_write_sector(floppy_image_legacy *floppy, in sector_data[i*2] = sector_data[(i*2)+1] = local_sector[i]; done: - if (local_sector) - free(local_sector); return err; } diff --git a/src/mess/tools/imgtool/iflopimg.c b/src/mess/tools/imgtool/iflopimg.c index 8933a44bcda..26a91ccf749 100644 --- a/src/mess/tools/imgtool/iflopimg.c +++ b/src/mess/tools/imgtool/iflopimg.c @@ -310,16 +310,11 @@ static imgtoolerr_t imgtool_floppy_transfer_sector_tofrom_stream(imgtool_image * { floperr_t err; floppy_image_legacy *floppy; - void *buffer = NULL; + dynamic_buffer buffer; floppy = imgtool_floppy(img); - buffer = malloc(length); - if (!buffer) - { - err = FLOPPY_ERROR_OUTOFMEMORY; - goto done; - } + buffer.resize(length); if (direction) { @@ -339,8 +334,6 @@ static imgtoolerr_t imgtool_floppy_transfer_sector_tofrom_stream(imgtool_image * err = FLOPPY_ERROR_SUCCESS; done: - if (buffer) - free(buffer); return imgtool_floppy_error(err); } diff --git a/src/mess/tools/imgtool/imghd.c b/src/mess/tools/imgtool/imghd.c index 1d66b05196c..65f404f531c 100644 --- a/src/mess/tools/imgtool/imghd.c +++ b/src/mess/tools/imgtool/imghd.c @@ -47,7 +47,7 @@ static imgtoolerr_t map_chd_error(chd_error chderr) imgtoolerr_t imghd_create(imgtool_stream *stream, UINT32 hunksize, UINT32 cylinders, UINT32 heads, UINT32 sectors, UINT32 seclen) { imgtoolerr_t err = IMGTOOLERR_SUCCESS; - UINT8 *cache = NULL; + dynamic_buffer cache; chd_file chd; chd_error rc; UINT64 logicalbytes; @@ -101,13 +101,8 @@ imgtoolerr_t imghd_create(imgtool_stream *stream, UINT32 hunksize, UINT32 cylind } /* alloc and zero buffer */ - cache = (UINT8*)malloc(hunksize); - if (!cache) - { - err = IMGTOOLERR_OUTOFMEMORY; - goto done; - } - memset(cache, '\0', hunksize); + cache.resize(hunksize); + cache.clear(); /* zero out every hunk */ totalhunks = (logicalbytes + hunksize - 1) / hunksize; @@ -121,10 +116,7 @@ imgtoolerr_t imghd_create(imgtool_stream *stream, UINT32 hunksize, UINT32 cylind } } - done: - if (cache) - free(cache); return err; } diff --git a/src/mess/tools/imgtool/main.c b/src/mess/tools/imgtool/main.c index 056542c0646..3929a960336 100644 --- a/src/mess/tools/imgtool/main.c +++ b/src/mess/tools/imgtool/main.c @@ -625,7 +625,7 @@ static int cmd_readsector(const struct command *c, int argc, char *argv[]) imgtoolerr_t err; imgtool_image *img; imgtool_stream *stream = NULL; - void *buffer = NULL; + dynamic_buffer buffer; UINT32 size, track, head, sector; /* attempt to open image */ @@ -641,12 +641,7 @@ static int cmd_readsector(const struct command *c, int argc, char *argv[]) if (err) goto done; - buffer = malloc(size); - if (!buffer) - { - err = IMGTOOLERR_OUTOFMEMORY; - goto done; - } + buffer.resize(size); err = imgtool_image_read_sector(img, track, head, sector, buffer, size); if (err) @@ -663,8 +658,6 @@ static int cmd_readsector(const struct command *c, int argc, char *argv[]) stream_write(stream, buffer, size); done: - if (buffer) - free(buffer); if (stream) stream_close(stream); if (err) @@ -679,7 +672,7 @@ static int cmd_writesector(const struct command *c, int argc, char *argv[]) imgtoolerr_t err; imgtool_image *img; imgtool_stream *stream = NULL; - void *buffer = NULL; + dynamic_buffer buffer; UINT32 size, track, head, sector; /* attempt to open image */ @@ -700,12 +693,7 @@ static int cmd_writesector(const struct command *c, int argc, char *argv[]) size = (UINT32) stream_size(stream); - buffer = malloc(size); - if (!buffer) - { - err = (imgtoolerr_t)(IMGTOOLERR_OUTOFMEMORY); - goto done; - } + buffer.resize(size); stream_read(stream, buffer, size); @@ -714,8 +702,6 @@ static int cmd_writesector(const struct command *c, int argc, char *argv[]) goto done; done: - if (buffer) - free(buffer); if (stream) stream_close(stream); if (err) diff --git a/src/mess/tools/imgtool/modules/os9.c b/src/mess/tools/imgtool/modules/os9.c index c0254d1a0c2..0e502d4d416 100644 --- a/src/mess/tools/imgtool/modules/os9.c +++ b/src/mess/tools/imgtool/modules/os9.c @@ -711,7 +711,7 @@ static imgtoolerr_t os9_diskimage_open(imgtool_image *image, imgtool_stream *str static imgtoolerr_t os9_diskimage_create(imgtool_image *img, imgtool_stream *stream, option_resolution *opts) { imgtoolerr_t err; - UINT8 *header; + dynamic_buffer header; UINT32 heads, tracks, sectors, sector_bytes, first_sector_id; UINT32 cluster_size, owner_id; UINT32 allocation_bitmap_bits, allocation_bitmap_lsns; @@ -732,12 +732,7 @@ static imgtoolerr_t os9_diskimage_create(imgtool_image *img, imgtool_stream *str first_sector_id = option_resolution_lookup_int(opts, 'F'); title = ""; - header = (UINT8*)malloc(sector_bytes); - if (!header) - { - err = IMGTOOLERR_OUTOFMEMORY; - goto done; - } + header.resize(sector_bytes); if (sector_bytes > 256) sector_bytes = 256; @@ -845,8 +840,6 @@ static imgtoolerr_t os9_diskimage_create(imgtool_image *img, imgtool_stream *str goto done; done: - if (header) - free(header); return err; } @@ -1037,7 +1030,7 @@ static imgtoolerr_t os9_diskimage_writefile(imgtool_partition *partition, const imgtool_image *image = imgtool_partition_image(partition); struct os9_fileinfo file_info; size_t write_size; - void *buf = NULL; + dynamic_buffer buf; int i = -1; UINT32 lsn = 0; UINT32 count = 0; @@ -1046,12 +1039,7 @@ static imgtoolerr_t os9_diskimage_writefile(imgtool_partition *partition, const disk_info = os9_get_diskinfo(image); - buf = malloc(disk_info->sector_size); - if (!buf) - { - err = IMGTOOLERR_OUTOFMEMORY; - goto done; - } + buf.resize(disk_info->sector_size); err = os9_lookup_path(image, path, CREATE_FILE, &file_info, NULL, NULL, NULL); if (err) @@ -1086,8 +1074,6 @@ static imgtoolerr_t os9_diskimage_writefile(imgtool_partition *partition, const } done: - if (buf) - free(buf); return err; } diff --git a/src/mess/tools/imgtool/modules/psion.c b/src/mess/tools/imgtool/modules/psion.c index 8ea7d193e7e..7b6e764efdd 100644 --- a/src/mess/tools/imgtool/modules/psion.c +++ b/src/mess/tools/imgtool/modules/psion.c @@ -286,15 +286,13 @@ UINT16 put_odb(imgtool_stream *instream, imgtool_stream *outstream, UINT8 file_i UINT16 put_ob3(imgtool_stream *instream, imgtool_stream *outstream) { UINT16 size = stream_size(instream) - 6; - UINT8 *buffer = (UINT8*)malloc(size); + dynamic_buffer buffer(size); stream_seek(instream, 6, SEEK_SET); stream_read(instream, buffer, size); stream_write(outstream, buffer, size); - free(buffer); - // end of pack stream_fill(outstream, 0xff, 2);