summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Oliver Stöneberg <firewave@users.noreply.github.com>2018-01-21 05:24:51 +0100
committer Vas Crabb <cuavas@users.noreply.github.com>2018-01-21 15:24:51 +1100
commit4e64f9572137929ff87ef47946438366f35e886a (patch)
treee555e271b04b24df3fa9db2cee0de980456bd9fc
parent115b7b15a85510ec6714763b67a92cc87c85ca1e (diff)
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)
-rw-r--r--src/devices/bus/ti99/gromport/cartridges.cpp2
-rw-r--r--src/lib/util/chdcd.cpp4
-rw-r--r--src/tools/imgtool/modules/mac.cpp5
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<rpk_reader>(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 */