From 88cb18061843a03927074620ff610dd6be2b461d Mon Sep 17 00:00:00 2001 From: Curt Coder Date: Fri, 24 Jan 2014 10:16:53 +0000 Subject: [PATCH] (MESS) d64_dsk: Fixed memory leak. (nw) --- src/lib/formats/d64_dsk.c | 17 +++++++++-------- src/lib/formats/d64_dsk.h | 2 +- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/src/lib/formats/d64_dsk.c b/src/lib/formats/d64_dsk.c index 0856bf774c1..aa7df19fd77 100644 --- a/src/lib/formats/d64_dsk.c +++ b/src/lib/formats/d64_dsk.c @@ -166,17 +166,16 @@ floppy_image_format_t::desc_e* d64_format::get_sector_desc(const format &f, int return desc; } -void d64_format::build_sector_description(const format &f, UINT8 *sectdata, desc_s *sectors, int sector_count, UINT8 *errordata) const +void d64_format::build_sector_description(const format &f, UINT8 *sectdata, offs_t sect_offs, offs_t error_offs, desc_s *sectors, int sector_count) const { - int cur_offset = 0; - for(int i=0; i>= 8-(remaining_size & 7); - build_sector_description(f, &img[track_offset], sectors, sector_count, &img[f.sector_count*f.sector_base_size + error_offset]); + build_sector_description(f, img, track_offset, error_offset, sectors, sector_count); generate_track(desc, physical_track, head, sectors, sector_count, total_size, image); track_offset += track_size; @@ -234,6 +233,8 @@ bool d64_format::load(io_generic *io, UINT32 form_factor, floppy_image *image) } } + global_free(img); + image->set_variant(f.variant); return true; diff --git a/src/lib/formats/d64_dsk.h b/src/lib/formats/d64_dsk.h index 2d43d159538..9410736dcb9 100644 --- a/src/lib/formats/d64_dsk.h +++ b/src/lib/formats/d64_dsk.h @@ -65,7 +65,7 @@ protected: virtual int get_disk_id_offset(const format &f); void get_disk_id(const format &f, io_generic *io, UINT8 &id1, UINT8 &id2); floppy_image_format_t::desc_e* get_sector_desc(const format &f, int ¤t_size, int track, int sector_count, UINT8 id1, UINT8 id2, int gap_2); - void build_sector_description(const format &f, UINT8 *sectdata, desc_s *sectors, int sector_count, UINT8 *errordata) const; + void build_sector_description(const format &f, UINT8 *sectdata, offs_t sect_offs, offs_t error_offs, desc_s *sectors, int sector_count) const; void extract_sectors(floppy_image *image, const format &f, desc_s *sdesc, int track, int head); static const format file_formats[];