diff src/adplug/core/a2m.cxx @ 869:48ebfc711a8c trunk

[svn] - guard some potentially improper double delete [] usage
author nenolod
date Fri, 16 Mar 2007 21:08:34 -0700
parents cae46214b8bf
children 87666f9bf6d0
line wrap: on
line diff
--- 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;l<alength;l++) org[l] = f->readInt(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;
 }