Index: /issm/trunk/src/c/objects/Bamg/Geometry.cpp
===================================================================
--- /issm/trunk/src/c/objects/Bamg/Geometry.cpp	(revision 9305)
+++ /issm/trunk/src/c/objects/Bamg/Geometry.cpp	(revision 9306)
@@ -529,4 +529,7 @@
 				printf("reference numbers: %i %i\n",v->ReferenceNumber,vertices[i].ReferenceNumber);
 				printf("Id: %i\n",i+1);
+				delete [] next_p;
+				delete [] head_v;
+				delete [] eangle;
 				_error_("two points of the geometry are very closed to each other (see reference numbers above)");
 			}
Index: /issm/trunk/src/c/objects/Bamg/ListofIntersectionTriangles.cpp
===================================================================
--- /issm/trunk/src/c/objects/Bamg/ListofIntersectionTriangles.cpp	(revision 9305)
+++ /issm/trunk/src/c/objects/Bamg/ListofIntersectionTriangles.cpp	(revision 9306)
@@ -188,10 +188,7 @@
 				printf("   reshape lSegsI from %i to %i\n",mneo,MaxNbSeg);
 			}
+			_assert_(lSegsI && NbSeg<MaxNbSeg);
 			SegInterpolation * lEn =  new SegInterpolation[MaxNbSeg];
-			if (!lSegsI || NbSeg>=MaxNbSeg){
-				_error_("!lSegsI || NbSeg>=MaxNbSeg");
-			}
-			for (int i=0;i< NbSeg;i++) 
-			 lEn[i] = lSegsI[MaxNbSeg]; // copy old to new            
+			for (int i=0;i< NbSeg;i++) lEn[i] = lSegsI[MaxNbSeg]; // copy old to new            
 			delete []  lSegsI; // remove old
 			lSegsI = lEn;        
Index: /issm/trunk/src/c/objects/Bamg/Mesh.cpp
===================================================================
--- /issm/trunk/src/c/objects/Bamg/Mesh.cpp	(revision 9305)
+++ /issm/trunk/src/c/objects/Bamg/Mesh.cpp	(revision 9306)
@@ -110,4 +110,6 @@
 			  }
 		  if (imaxnbv != nbv){
+			  delete [] kk;
+			  delete [] refv;
 			  _error_("imaxnbv != nbv");
 		  }
@@ -1293,4 +1295,5 @@
 		//check that there is no double edge
 		if (nbe !=  edge4->nb()){ 
+			delete [] st;
 			_error_("Some Double edge in the mesh, the number is %i, nbe4=%i",nbe,edge4->nb()); 
 		}
@@ -1603,4 +1606,5 @@
 		Gh.coefIcoor= (MaxICoor)/(Max(Gh.pmax.x-Gh.pmin.x,Gh.pmax.y-Gh.pmin.y));
 		if (Gh.coefIcoor<=0){
+			delete [] colorV;
 			_error_("Gh.coefIcoor<=0 in infered Geometry (this should not happen)");
 		}
@@ -1654,4 +1658,5 @@
 			k = edge4->SortAndAdd(i0,i1);
 			if (k != i){
+				delete [] len;
 				_error_("problem in Edge4 construction: k != i");
 			}
@@ -2246,4 +2251,5 @@
 				//The vertex cannot be marked more than twice
 				if (splitvertex[i1]==3 || splitvertex[i2]==3){
+					delete [] splitvertex;
 					_error_("Crossing rifts not supported yet");
 				}
@@ -2481,4 +2487,5 @@
 			it++;} // end while (it<nbt)
 			if (nbt == nbtout ||  !NbSubDomTot) {
+				delete [] HeapArete;
 				_error_("The boundary is not close: all triangles are outside");
 			}
@@ -2518,4 +2525,5 @@
 						it++;} // end white (it<nbt)
 						if (k!=nbsubdomains){
+							delete [] mark;
 							_error_("k!=nbsubdomains");
 						}
@@ -4643,5 +4651,5 @@
 		nbtout = nbtoutold;
 		// cleaning memory ---
-		delete newedges;
+		delete [] newedges;
 		if (ksplitarray) delete [] ksplitarray;
 		if (kedge) delete [] kedge;
@@ -5240,5 +5248,8 @@
 		int i; 
 		for (i=0;i<Gh.nbv;i++) if (Gh[i].Required()) NbVerticesOnGeomVertex++;
-		if(NbVerticesOnGeomVertex >= maxnbv) { _error_("too many vertices on geometry: %i >= %i",NbVerticesOnGeomVertex,maxnbv);}
+		if(NbVerticesOnGeomVertex >= maxnbv){
+			delete [] bcurve;
+			_error_("too many vertices on geometry: %i >= %i",NbVerticesOnGeomVertex,maxnbv);
+		}
 
 		VerticesOnGeomVertex = new VertexOnGeom[  NbVerticesOnGeomVertex];
Index: /issm/trunk/src/c/toolkits/petsc/patches/MatMultPatch.cpp
===================================================================
--- /issm/trunk/src/c/toolkits/petsc/patches/MatMultPatch.cpp	(revision 9305)
+++ /issm/trunk/src/c/toolkits/petsc/patches/MatMultPatch.cpp	(revision 9306)
@@ -108,4 +108,2 @@
 
 }
-
-	
