From 4e64f9572137929ff87ef47946438366f35e886a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Oliver=20St=C3=B6neberg?= Date: Sun, 21 Jan 2018 05:24:51 +0100 Subject: Fixes for Coverity "Resource leak" warnings (#3089) * lib/util/chdcd.cpp: fixed Coverity "Resource Leak" warning (nw) * src/lib/util/chdcd.cpp: fixed more Coverity "Resource Leak" warnings (nw) * tools/imgtool/modules/mac.cpp: fixed Coverity "Resource Leak" warnings (nw) * devices/bus/ti99/gromport/cartridges.cpp: fixed Coverity "Resource Leak" warning (nw) --- src/devices/bus/ti99/gromport/cartridges.cpp | 2 +- src/lib/util/chdcd.cpp | 4 ++++ src/tools/imgtool/modules/mac.cpp | 5 ++++- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/devices/bus/ti99/gromport/cartridges.cpp b/src/devices/bus/ti99/gromport/cartridges.cpp index b4a1669fec3..fd1180bbaa5 100644 --- a/src/devices/bus/ti99/gromport/cartridges.cpp +++ b/src/devices/bus/ti99/gromport/cartridges.cpp @@ -231,7 +231,7 @@ image_init_result ti99_cartridge_device::call_load() } else { - auto reader = new rpk_reader(pcbdefs); + auto reader = std::make_unique(pcbdefs); try { m_rpk = reader->open(machine().options(), filename(), machine().system().name); diff --git a/src/lib/util/chdcd.cpp b/src/lib/util/chdcd.cpp index b69195a8a91..63a94ed7d4b 100644 --- a/src/lib/util/chdcd.cpp +++ b/src/lib/util/chdcd.cpp @@ -905,12 +905,14 @@ chd_error chdcd_parse_cue(const char *tocfname, cdrom_toc &outtoc, chdcd_track_i wavlen = parse_wav_sample(lastfname.c_str(), &wavoffs); if (!wavlen) { + fclose(infile); printf("ERROR: couldn't read [%s] or not a valid .WAV\n", lastfname.c_str()); return CHDERR_INVALID_DATA; } } else { + fclose(infile); printf("ERROR: Unhandled track type %s\n", token); return CHDERR_UNSUPPORTED_FORMAT; } @@ -952,6 +954,7 @@ chd_error chdcd_parse_cue(const char *tocfname, cdrom_toc &outtoc, chdcd_track_i cdrom_convert_type_string_to_track_info(token, &outtoc.tracks[trknum]); if (outtoc.tracks[trknum].datasize == 0) { + fclose(infile); printf("ERROR: Unknown track type [%s]. Contact MAMEDEV.\n", token); return CHDERR_UNSUPPORTED_FORMAT; } @@ -1297,6 +1300,7 @@ chd_error chdcd_parse_toc(const char *tocfname, cdrom_toc &outtoc, chdcd_track_i cdrom_convert_type_string_to_track_info(token, &outtoc.tracks[trknum]); if (outtoc.tracks[trknum].datasize == 0) { + fclose(infile); printf("ERROR: Unknown track type [%s]. Contact MAMEDEV.\n", token); return CHDERR_UNSUPPORTED_FORMAT; } diff --git a/src/tools/imgtool/modules/mac.cpp b/src/tools/imgtool/modules/mac.cpp index f606451c6e1..90c68323f76 100644 --- a/src/tools/imgtool/modules/mac.cpp +++ b/src/tools/imgtool/modules/mac.cpp @@ -4485,7 +4485,10 @@ end_of_list: /* check free node count */ if (freeNodes != actualFreeNodes) - return IMGTOOLERR_CORRUPTIMAGE; + { + err = IMGTOOLERR_CORRUPTIMAGE; + goto bail; + } bail: /* free buffers */ -- cgit v1.2.3