diff --git a/engines/agos/extract_agos.cpp b/engines/agos/extract_agos.cpp index 940022d0..ddc0f260 100644 --- a/engines/agos/extract_agos.cpp +++ b/engines/agos/extract_agos.cpp @@ -53,14 +53,13 @@ void ExtractAgos::execute() { if (out) { if (simon_decr(x, out, _filelen)) { savefile(_outputPath.getFullPath(), out, decrlen); + free(x); + free(out); } else { free(x); free(out); error("%s: decrunch error\n", infilename.getFullPath().c_str()); } - - free(x); - free(out); } } diff --git a/engines/tinsel/compress_tinsel.cpp b/engines/tinsel/compress_tinsel.cpp index fe5b1324..f88f25a6 100644 --- a/engines/tinsel/compress_tinsel.cpp +++ b/engines/tinsel/compress_tinsel.cpp @@ -158,6 +158,7 @@ void CompressTinsel::convertTinselADPCMSample (uint32 sampleSize) { outBuffer = (int16 *)malloc(uncompressedSize); if (!outBuffer) { print("malloc failed!\n"); + free(inBuffer); return; } diff --git a/sci/sciunpack.cpp b/sci/sciunpack.cpp index c9c50dc3..5b03fa08 100644 --- a/sci/sciunpack.cpp +++ b/sci/sciunpack.cpp @@ -437,6 +437,7 @@ void unpack_resource(int stype, int snr, char *outfilename) { guint8 *outdata = makeMIDI0(found->data, &midilength, midimask); if (!outdata) { fprintf(stderr, "MIDI conversion failed. Aborting...\n"); + close(outf); return; } if (verbose) printf("MIDI conversion from %d bytes of sound resource" diff --git a/tools.h b/tools.h index 925459a4..49273dc5 100644 --- a/tools.h +++ b/tools.h @@ -33,7 +33,7 @@ class Tools { public: Tools(); - ~Tools(); + virtual ~Tools(); typedef std::vector ToolList;