# HG changeset patch # User nenolod # Date 1174104514 25200 # Node ID 48ebfc711a8cf9237c9dfe9e10d4266b188fadc8 # Parent d889a20dd9b5a30566e65f319d655688099b0e05 [svn] - guard some potentially improper double delete [] usage diff -r d889a20dd9b5 -r 48ebfc711a8c ChangeLog --- a/ChangeLog Fri Mar 16 18:58:17 2007 -0700 +++ b/ChangeLog Fri Mar 16 21:08:34 2007 -0700 @@ -1,3 +1,12 @@ +2007-03-17 01:58:17 +0000 William Pitcock + revision [1836] + - fix double delete[] possibility. + + trunk/src/adplug/core/u6m.cxx | 4 ++-- + trunk/src/adplug/core/u6m.h | 2 +- + 2 files changed, 3 insertions(+), 3 deletions(-) + + 2007-03-17 01:58:10 +0000 Giacomo Lozito revision [1834] - last commit wasn't obviously related wit changes here; revert stuff that is still being tested diff -r d889a20dd9b5 -r 48ebfc711a8c src/adplug/core/a2m.cxx --- a/src/adplug/core/a2m.cxx Fri Mar 16 18:58:17 2007 -0700 +++ b/src/adplug/core/a2m.cxx Fri Mar 16 21:08:34 2007 -0700 @@ -138,8 +138,10 @@ initspeed = *orgptr; // v5-8 files have an additional flag byte here if(ch.version == 1 || ch.version == 5) - delete [] org; - delete [] secdata; + { + delete [] org; org = 0; + } + delete [] secdata; secdata = 0; // blocks 1-4 or 1-8 alength = len[1]; @@ -175,7 +177,7 @@ if(ch.numpats > 56) sixdepak(secptr,orgptr,len[8]); } - delete [] secdata; + delete [] secdata; secdata = 0; } else { org = (unsigned char *)secdata; for(l=0;lreadInt(1); @@ -234,9 +236,13 @@ } if(ch.version == 1 || ch.version == 5) - delete [] org; + { + delete [] org; org = 0; + } else - delete [] secdata; + { + delete [] secdata; secdata = 0; + } fp.close(f); rewind(0); return true; @@ -444,6 +450,6 @@ wdbuf = source; obuf = dest; decode(); - delete [] buf; + if (buf) { delete [] buf; buf = 0; } return output_size; } diff -r d889a20dd9b5 -r 48ebfc711a8c src/adplug/core/adl.cxx --- a/src/adplug/core/adl.cxx Fri Mar 16 18:58:17 2007 -0700 +++ b/src/adplug/core/adl.cxx Fri Mar 16 21:08:34 2007 -0700 @@ -2218,8 +2218,8 @@ } CadlPlayer::~CadlPlayer() { - delete [] _soundDataPtr; - delete _driver; + delete [] _soundDataPtr; _soundDataPtr = 0; + delete _driver; _driver = 0; } bool CadlPlayer::init() { diff -r d889a20dd9b5 -r 48ebfc711a8c src/adplug/core/sng.h --- a/src/adplug/core/sng.h Fri Mar 16 18:58:17 2007 -0700 +++ b/src/adplug/core/sng.h Fri Mar 16 21:08:34 2007 -0700 @@ -32,8 +32,8 @@ CsngPlayer(Copl *newopl) : CPlayer(newopl), data(0) { }; - ~CsngPlayer() - { if(data) delete [] data; }; + + ~CsngPlayer() { if(data) delete [] data; data = 0; }; bool load(VFSFile *fd, const CFileProvider &fp); bool update(); diff -r d889a20dd9b5 -r 48ebfc711a8c src/adplug/core/temuopl.cxx --- a/src/adplug/core/temuopl.cxx Fri Mar 16 18:58:17 2007 -0700 +++ b/src/adplug/core/temuopl.cxx Fri Mar 16 21:08:34 2007 -0700 @@ -59,7 +59,7 @@ for(i=0;i<(stereo ? samples*2 : samples);i++) ((char *)buf)[i] = (tempbuf[i] >> 8) ^ 0x80; - delete [] tempbuf; + delete [] tempbuf; tempbuf = 0; } } diff -r d889a20dd9b5 -r 48ebfc711a8c src/adplug/core/u6m.cxx --- a/src/adplug/core/u6m.cxx Fri Mar 16 18:58:17 2007 -0700 +++ b/src/adplug/core/u6m.cxx Fri Mar 16 21:08:34 2007 -0700 @@ -89,7 +89,7 @@ } // deallocation section - delete[] compressed_song_data; + delete[] compressed_song_data; compressed_song_data = 0; rewind(0); return (true); @@ -900,7 +900,7 @@ Cu6mPlayer::MyDict::~MyDict() { - delete [] dictionary; + delete [] dictionary; dictionary = 0; } // re-initializes the dictionary diff -r d889a20dd9b5 -r 48ebfc711a8c src/adplug/core/xad.cxx --- a/src/adplug/core/xad.cxx Fri Mar 16 18:58:17 2007 -0700 +++ b/src/adplug/core/xad.cxx Fri Mar 16 21:08:34 2007 -0700 @@ -31,8 +31,7 @@ CxadPlayer::~CxadPlayer() { - if (tune) - delete [] tune; + if (tune) { delete [] tune; tune = 0; } } bool CxadPlayer::load(VFSFile *fd, const CFileProvider &fp) diff -r d889a20dd9b5 -r 48ebfc711a8c src/adplug/core/xsm.cxx --- a/src/adplug/core/xsm.cxx Fri Mar 16 18:58:17 2007 -0700 +++ b/src/adplug/core/xsm.cxx Fri Mar 16 21:08:34 2007 -0700 @@ -30,7 +30,7 @@ CxsmPlayer::~CxsmPlayer() { - if(music) delete [] music; + if(music) { delete [] music; music = 0; } } bool CxsmPlayer::load(VFSFile *fd, const CFileProvider &fp)