Index: /issm/trunk-jpl/src/c/objects/Bamg/BamgGeom.cpp
===================================================================
--- /issm/trunk-jpl/src/c/objects/Bamg/BamgGeom.cpp	(revision 12455)
+++ /issm/trunk-jpl/src/c/objects/Bamg/BamgGeom.cpp	(revision 12456)
@@ -22,12 +22,12 @@
 BamgGeom::~BamgGeom(){
 
-	xfree((void**)&this->Vertices);
-	xfree((void**)&this->Edges);
-	xfree((void**)&this->TangentAtEdges);
-	xfree((void**)&this->Corners);
-	xfree((void**)&this->RequiredVertices);
-	xfree((void**)&this->RequiredEdges);
-	xfree((void**)&this->CrackedEdges);
-	xfree((void**)&this->SubDomains);
+	xDelete<double>(this->Vertices);
+	xDelete<double>(this->Edges);
+	xDelete<double>(this->TangentAtEdges);
+	xDelete<double>(this->Corners);
+	xDelete<double>(this->RequiredVertices);
+	xDelete<double>(this->RequiredEdges);
+	xDelete<double>(this->CrackedEdges);
+	xDelete<double>(this->SubDomains);
 
 }
Index: /issm/trunk-jpl/src/c/objects/Bamg/BamgMesh.cpp
===================================================================
--- /issm/trunk-jpl/src/c/objects/Bamg/BamgMesh.cpp	(revision 12455)
+++ /issm/trunk-jpl/src/c/objects/Bamg/BamgMesh.cpp	(revision 12456)
@@ -33,26 +33,24 @@
 BamgMesh::~BamgMesh(){
 
-	xfree((void**)&this->Vertices);
-	xfree((void**)&this->Edges);
-	xfree((void**)&this->Triangles);
-	xfree((void**)&this->Quadrilaterals);
+	xDelete<double>(this->Vertices);
+	xDelete<double>(this->Edges);
+	xDelete<double>(this->Triangles);
+	xDelete<double>(this->Quadrilaterals);
 
-	xfree((void**)&this->SubDomains);
-	xfree((void**)&this->SubDomainsFromGeom);
-	xfree((void**)&this->CrackedVertices);
-	xfree((void**)&this->CrackedEdges);
+	xDelete<double>(this->SubDomains);
+	xDelete<double>(this->SubDomainsFromGeom);
+	xDelete<double>(this->CrackedVertices);
+	xDelete<double>(this->CrackedEdges);
 
-	xfree((void**)&this->VerticesOnGeomVertex);
-	xfree((void**)&this->VerticesOnGeomEdge);
-	xfree((void**)&this->EdgesOnGeomEdge);
+	xDelete<double>(this->VerticesOnGeomVertex);
+	xDelete<double>(this->VerticesOnGeomEdge);
+	xDelete<double>(this->EdgesOnGeomEdge);
 
-	xfree((void**)&this->IssmEdges);
-	xfree((void**)&this->IssmSegments);
+	xDelete<double>(this->IssmEdges);
+	xDelete<double>(this->IssmSegments);
 
-	xfree((void**)&this->ElementConnectivity);
-	xfree((void**)&this->NodalConnectivity);
-	xfree((void**)&this->NodalElementConnectivity);
-
-
+	xDelete<double>(this->ElementConnectivity);
+	xDelete<double>(this->NodalConnectivity);
+	xDelete<double>(this->NodalElementConnectivity);
 }
 /*}}}*/
Index: /issm/trunk-jpl/src/c/objects/Bamg/BamgOpts.cpp
===================================================================
--- /issm/trunk-jpl/src/c/objects/Bamg/BamgOpts.cpp	(revision 12455)
+++ /issm/trunk-jpl/src/c/objects/Bamg/BamgOpts.cpp	(revision 12456)
@@ -44,10 +44,10 @@
 BamgOpts::~BamgOpts(){
 
-	xfree((void**)&this->hminVertices);
-	xfree((void**)&this->hmaxVertices);
-	xfree((void**)&this->hVertices);
-	xfree((void**)&this->metric);
-	xfree((void**)&this->field);
-	xfree((void**)&this->err);
+	xDelete<double>(this->hminVertices);
+	xDelete<double>(this->hmaxVertices);
+	xDelete<double>(this->hVertices);
+	xDelete<double>(this->metric);
+	xDelete<double>(this->field);
+	xDelete<double>(this->err);
 
 }
Index: /issm/trunk-jpl/src/c/objects/Bamg/Geometry.cpp
===================================================================
--- /issm/trunk-jpl/src/c/objects/Bamg/Geometry.cpp	(revision 12455)
+++ /issm/trunk-jpl/src/c/objects/Bamg/Geometry.cpp	(revision 12456)
@@ -298,5 +298,5 @@
 		bamggeom->VerticesSize[1]=3;
 		if (nbv){
-			bamggeom->Vertices=(double*)xmalloc(3*nbv*sizeof(double));
+			bamggeom->Vertices=xNew<double>(3*nbv);
 			for (i=0;i<nbv;i++){
 				bamggeom->Vertices[i*3+0]=vertices[i].r.x;
@@ -314,5 +314,5 @@
 		bamggeom->EdgesSize[1]=3;
 		if (nbe){
-			bamggeom->Edges=(double*)xmalloc(3*nbe*sizeof(double));
+			bamggeom->Edges=xNew<double>(3*nbe);
 			for (i=0;i<nbe;i++){
 				bamggeom->Edges[i*3+0]=GetId(edges[i][0])+1; //back to Matlab indexing
@@ -332,5 +332,5 @@
 		bamggeom->RequiredEdgesSize[1]=1;
 		if (nbreq){
-			bamggeom->RequiredEdges=(double*)xmalloc(1*nbreq*sizeof(double));
+			bamggeom->RequiredEdges=xNew<double>(1*nbreq);
 			count=0;
 			for (i=0;i<nbe;i++){
@@ -349,5 +349,5 @@
 		bamggeom->RequiredVerticesSize[1]=1;
 		if (nbreqv){
-			bamggeom->RequiredVertices=(double*)xmalloc(1*nbreqv*sizeof(double));
+			bamggeom->RequiredVertices=xNew<double>(1*nbreqv);
 			count=0;
 			for (i=0;i<nbv;i++){
@@ -364,5 +364,5 @@
 		bamggeom->SubDomainsSize[1]=4;
 		if (nbsubdomains){
-			bamggeom->SubDomains=(double*)xmalloc(4*nbsubdomains*sizeof(double));
+			bamggeom->SubDomains=xNew<double>(4*nbsubdomains);
 			for (i=0;i<nbsubdomains;i++){
 				bamggeom->SubDomains[4*i+0]=2;
@@ -378,5 +378,5 @@
 		bamggeom->TangentAtEdgesSize[1]=4;
 		if (nbtan){
-			bamggeom->TangentAtEdges=(double*)xmalloc(4*nbtan*sizeof(double));
+			bamggeom->TangentAtEdges=xNew<double>(4*nbtan);
 			count=0;
 			for (i=0;i<nbe;i++){
Index: /issm/trunk-jpl/src/c/objects/Bamg/Mesh.cpp
===================================================================
--- /issm/trunk-jpl/src/c/objects/Bamg/Mesh.cpp	(revision 12455)
+++ /issm/trunk-jpl/src/c/objects/Bamg/Mesh.cpp	(revision 12456)
@@ -281,6 +281,6 @@
 		//Vertices
 		if (verbose) printf("Reading vertices (%i)\n",nbv);
-		vertices=(BamgVertex*)xmalloc(nbv*sizeof(BamgVertex));
-		orderedvertices=(BamgVertex**)xmalloc(nbv*sizeof(BamgVertex*));
+		vertices=xNew<BamgVertex>(nbv);
+		orderedvertices=xNew<BamgVertex*>(nbv);
 		for (i=0;i<nbv;i++){
 			vertices[i].r.x=x[i];
@@ -296,5 +296,5 @@
 		if (verbose) printf("Reading triangles (%i)\n",nbt);
 		triangles =new Triangle[maxnbt]; //we cannot allocate only nbt triangles since 
-		nodeflags=(bool*)xmalloc(nbv*sizeof(bool));
+		nodeflags=xNew<bool>(nbv);
 		for(i=0;i<nbv;i++) nodeflags[i]=false;
 		//other triangles will be added for each edge
@@ -326,5 +326,5 @@
 
 		/*Clean up*/
-		xfree((void**)&nodeflags);
+		xDelete<bool>(nodeflags);
 	}
 	/*}}}*/
@@ -348,6 +348,6 @@
 			if(verbose>5) printf("      processing Vertices\n");
 
-			vertices=(BamgVertex*)xmalloc(nbv*sizeof(BamgVertex));
-			orderedvertices=(BamgVertex**)xmalloc(nbv*sizeof(BamgVertex*));
+			vertices=xNew<BamgVertex>(nbv);
+			orderedvertices=xNew<BamgVertex*>(nbv);
 
 			for (i=0;i<nbv;i++){
@@ -553,7 +553,7 @@
 
 		//Memory Allocation
-		head_1=(int*)xmalloc(nbv*sizeof(int));
-		next_1=(int*)xmalloc(3*nbt*sizeof(int));
-		connectivitysize_1=(int*)xmalloc(nbv*sizeof(int));
+		head_1=xNew<int>(nbv);
+		next_1=xNew<int>(3*nbt);
+		connectivitysize_1=xNew<int>(nbv);
 
 		//Initialization
@@ -588,5 +588,5 @@
 		bamgmesh->VerticesSize[1]=3;
 		if (nbv){
-			bamgmesh->Vertices=(double*)xmalloc(3*nbv*sizeof(double));
+			bamgmesh->Vertices=xNew<double>(3*nbv);
 			for (i=0;i<nbv;i++){
 				bamgmesh->Vertices[i*3+0]=vertices[i].r.x;
@@ -602,5 +602,5 @@
 		int NumIssmSegments=0;
 		if (nbe){
-			bamgmesh->Edges=(double*)xmalloc(3*nbe*sizeof(double));
+			bamgmesh->Edges=xNew<double>(3*nbe);
 			for (i=0;i<nbe;i++){
 				bamgmesh->Edges[i*3+0]=GetId(edges[i][0])+1; //back to M indexing
@@ -617,5 +617,5 @@
 		SetOfEdges4* edge4=new SetOfEdges4(nbt*3,nbv);
 		double* elemedge=NULL;
-		elemedge=(double*)xmalloc(3*nbt*sizeof(double));
+		elemedge=xNew<double>(3*nbt);
 		for (i=0;i<3*nbt;i++) elemedge[i]=NAN;
 		k=0;
@@ -642,5 +642,5 @@
 		bamgmesh->IssmEdgesSize[0]=edge4->nb();
 		bamgmesh->IssmEdgesSize[1]=4;
-		bamgmesh->IssmEdges=(double*)xmalloc(4*edge4->nb()*sizeof(double));
+		bamgmesh->IssmEdges=xNew<double>(4*edge4->nb());
 		for (i=0;i<edge4->nb();i++){
 			/*Invert first two vertices if necessary*/
@@ -667,5 +667,5 @@
 		//clean up
 		delete edge4;
-		xfree((void**)&elemedge);
+		xDelete<double>(elemedge);
 
 		/*IssmSegments*/
@@ -673,5 +673,5 @@
 		bamgmesh->IssmSegmentsSize[0]=NumIssmSegments;
 		bamgmesh->IssmSegmentsSize[1]=4;
-		bamgmesh->IssmSegments=(double*)xmalloc(4*NumIssmSegments*sizeof(double));
+		bamgmesh->IssmSegments=xNew<double>(4*NumIssmSegments);
 		num=0;
 		for (i=0;i<nbe;i++){
@@ -719,5 +719,5 @@
 		bamgmesh->TrianglesSize[1]=4;
 		if (k){
-			bamgmesh->Triangles=(double*)xmalloc(4*k*sizeof(double));
+			bamgmesh->Triangles=xNew<double>(4*k);
 			for (i=0;i<nbt;i++){
 				Triangle &t=triangles[i];
@@ -738,5 +738,5 @@
 		bamgmesh->QuadrilateralsSize[1]=5;
 		if (nbq){
-			bamgmesh->Quadrilaterals=(double*)xmalloc(5*nbq*sizeof(double));
+			bamgmesh->Quadrilaterals=xNew<double>(5*nbq);
 			for (i=0;i<nbt;i++){
 				Triangle &t =triangles[i];
@@ -759,5 +759,5 @@
 		bamgmesh->SubDomainsSize[1]=4;
 		if (nbsubdomains){
-			bamgmesh->SubDomains=(double*)xmalloc(4*nbsubdomains*sizeof(double));
+			bamgmesh->SubDomains=xNew<double>(4*nbsubdomains);
 			for (i=0;i<nbsubdomains;i++){
 				bamgmesh->SubDomains[i*4+0]=3;
@@ -773,5 +773,5 @@
 		bamgmesh->SubDomainsFromGeomSize[1]=4;
 		if (Gh.nbsubdomains){
-			bamgmesh->SubDomainsFromGeom=(double*)xmalloc(4*Gh.nbsubdomains*sizeof(double));
+			bamgmesh->SubDomainsFromGeom=xNew<double>(4*Gh.nbsubdomains);
 			for (i=0;i<Gh.nbsubdomains;i++){
 				bamgmesh->SubDomainsFromGeom[i*4+0]=2;
@@ -787,5 +787,5 @@
 		bamgmesh->VerticesOnGeomVertexSize[1]=2;
 		if (NbVerticesOnGeomVertex){
-			bamgmesh->VerticesOnGeomVertex=(double*)xmalloc(2*NbVerticesOnGeomVertex*sizeof(double));
+			bamgmesh->VerticesOnGeomVertex=xNew<double>(2*NbVerticesOnGeomVertex);
 			for (i=0;i<NbVerticesOnGeomVertex;i++){
 				VertexOnGeom &v=VerticesOnGeomVertex[i];
@@ -801,5 +801,5 @@
 		bamgmesh->VerticesOnGeomEdgeSize[1]=3;
 		if (NbVerticesOnGeomEdge){
-			bamgmesh->VerticesOnGeomEdge=(double*)xmalloc(3*NbVerticesOnGeomEdge*sizeof(double));
+			bamgmesh->VerticesOnGeomEdge=xNew<double>(3*NbVerticesOnGeomEdge);
 			for (i=0;i<NbVerticesOnGeomEdge;i++){
 				const VertexOnGeom &v=VerticesOnGeomEdge[i];
@@ -822,5 +822,5 @@
 		bamgmesh->EdgesOnGeomEdgeSize[1]=2;
 		if (k){
-			bamgmesh->EdgesOnGeomEdge=(double*)xmalloc(2*(int)k*sizeof(double));
+			bamgmesh->EdgesOnGeomEdge=xNew<double>(2*(int)k);
 			int count=0;
 			for (i=0;i<nbe;i++){
@@ -837,5 +837,5 @@
 		bamgmesh->ElementConnectivitySize[0]=nbt-nbtout;
 		bamgmesh->ElementConnectivitySize[1]=3;
-		bamgmesh->ElementConnectivity=(double*)xmalloc(3*(nbt-nbtout)*sizeof(double));
+		bamgmesh->ElementConnectivity=xNew<double>(3*(nbt-nbtout));
 		for (i=0;i<3*(nbt-nbtout);i++) bamgmesh->ElementConnectivity[i]=NAN;
 		num=0;
@@ -857,5 +857,5 @@
 		bamgmesh->NodalElementConnectivitySize[0]=nbv;
 		bamgmesh->NodalElementConnectivitySize[1]=connectivitymax_1;
-		bamgmesh->NodalElementConnectivity=(double*)xmalloc(connectivitymax_1*nbv*sizeof(double));
+		bamgmesh->NodalElementConnectivity=xNew<double>(connectivitymax_1*nbv);
 		for (i=0;i<connectivitymax_1*nbv;i++) bamgmesh->NodalElementConnectivity[i]=NAN;
 		for (i=0;i<nbv;i++){
@@ -877,7 +877,7 @@
 		i1=bamgmesh->IssmEdgesSize[0];
 		i2=bamgmesh->IssmEdgesSize[1];
-		head_2=(int*)xmalloc(nbv*sizeof(int));
-		next_2=(int*)xmalloc(2*i1*sizeof(int));
-		connectivitysize_2=(int*)xmalloc(nbv*sizeof(int));
+		head_2=xNew<int>(nbv);
+		next_2=xNew<int>(2*i1);
+		connectivitysize_2=xNew<int>(nbv);
 		//Initialization
 		for (i=0;i<nbv;i++) head_2[i]=-1;
@@ -902,5 +902,5 @@
 		bamgmesh->NodalConnectivitySize[0]=nbv;
 		bamgmesh->NodalConnectivitySize[1]=connectivitymax_2;
-		bamgmesh->NodalConnectivity=(double*)xmalloc(connectivitymax_2*nbv*sizeof(double));
+		bamgmesh->NodalConnectivity=xNew<double>(connectivitymax_2*nbv);
 		for (i=0;i<connectivitymax_2*nbv;i++) bamgmesh->NodalConnectivity[i]=NAN;
 		for (i=0;i<nbv;i++){
@@ -925,5 +925,5 @@
 		bamgmesh->CrackedVerticesSize[1]=2;
 		if (NbCrackedVertices){
-			bamgmesh->CrackedVertices=(double*)xmalloc(2*NbCrackedVertices*sizeof(double));
+			bamgmesh->CrackedVertices=xNew<double>(2*NbCrackedVertices);
 			for (i=0;i<NbCrackedVertices;i++){
 				bamgmesh->CrackedVertices[i*2+0]=CrackedVertices[i*2+0]+1; //M indexing
@@ -937,5 +937,5 @@
 		bamgmesh->CrackedEdgesSize[1]=4;
 		if (NbCrackedEdges){
-			bamgmesh->CrackedEdges=(double*)xmalloc(2*NbCrackedEdges*sizeof(double));
+			bamgmesh->CrackedEdges=xNew<double>(2*NbCrackedEdges);
 			for (i=0;i<NbCrackedEdges;i++){
 				bamgmesh->CrackedEdges[i*2+0]=0;//CrackedEdges[i]->+1; //M indexing
@@ -945,10 +945,10 @@
 
 		//clean up
-		xfree((void**)&connectivitysize_1);
-		xfree((void**)&head_1);
-		xfree((void**)&next_1);
-		xfree((void**)&connectivitysize_2);
-		xfree((void**)&head_2);
-		xfree((void**)&next_2);
+		xDelete<int>(connectivitysize_1);
+		xDelete<int>(head_1);
+		xDelete<int>(next_1);
+		xDelete<int>(connectivitysize_2);
+		xDelete<int>(head_2);
+		xDelete<int>(next_2);
 		delete [] reft;
 		delete [] numt;
@@ -996,6 +996,6 @@
 	void Mesh::WriteMetric(BamgOpts* bamgopts) {
 		int i;
-		xfree((void**)&bamgopts->metric);
-		bamgopts->metric=(double*)xmalloc(3*nbv*sizeof(double));
+		xDelete<double>(bamgopts->metric);
+		bamgopts->metric=xNew<double>(3*nbv);
 		for (i=0;i<nbv;i++){
 			bamgopts->metric[i*3+0]=vertices[i].m.a11;
@@ -1023,5 +1023,5 @@
 
 		if (k){
-			index=(int*)xmalloc(3*k*sizeof(double));
+			index=xNew<int>(3*k);
 			num=0;
 			for (i=0;i<nbt;i++){
@@ -1795,7 +1795,7 @@
 		//first, build the chains that will be used for the Hessian computation, as weel as the area of each element
 		int* head_s=NULL;
-		head_s=(int*)xmalloc(nbv*sizeof(int));
+		head_s=xNew<int>(nbv);
 		int* next_p=NULL;
-		next_p=(int*)xmalloc(3*nbt*sizeof(int));
+		next_p=xNew<int>(3*nbt);
 		int  p=0;
 		//initialization
@@ -1936,6 +1936,6 @@
 
 		//clean up
-		xfree((void**)&head_s);
-		xfree((void**)&next_p);
+		xDelete<int>(head_s);
+		xDelete<int>(next_p);
 		delete [] detT;
 		delete [] alpha;
@@ -2307,5 +2307,5 @@
 		if (verbose>4) printf("      number of Cracked Vertices = %i\n",NbCrackedVertices);
 		if (NbCrackedVertices){
-			CrackedVertices=(long*)xmalloc(2*NbCrackedVertices*sizeof(double));
+			CrackedVertices=xNew<long>(2*NbCrackedVertices);
 			num=0;
 			for (i=0;i<nbv;i++){
Index: /issm/trunk-jpl/src/c/objects/Constraints/SpcTransient.cpp
===================================================================
--- /issm/trunk-jpl/src/c/objects/Constraints/SpcTransient.cpp	(revision 12455)
+++ /issm/trunk-jpl/src/c/objects/Constraints/SpcTransient.cpp	(revision 12456)
@@ -38,6 +38,6 @@
 	nsteps=spc_nsteps;
 	if(spc_nsteps){
-		values=(double*)xmalloc(spc_nsteps*sizeof(double));
-		times=(double*)xmalloc(spc_nsteps*sizeof(double));
+		values=xNew<double>(spc_nsteps);
+		times=xNew<double>(spc_nsteps);
 		memcpy(values,spc_values,nsteps*sizeof(double));
 		memcpy(times,spc_times,nsteps*sizeof(double));
@@ -49,6 +49,6 @@
 /*FUNCTION SpcTransient::~SpcTransient{{{*/
 SpcTransient::~SpcTransient(){
-	xfree((void**)&times);
-	xfree((void**)&values);
+	xDelete<double>(times);
+	xDelete<double>(values);
 	return;
 }
Index: /issm/trunk-jpl/src/c/objects/ExternalResults/BoolExternalResult.cpp
===================================================================
--- /issm/trunk-jpl/src/c/objects/ExternalResults/BoolExternalResult.cpp	(revision 12455)
+++ /issm/trunk-jpl/src/c/objects/ExternalResults/BoolExternalResult.cpp	(revision 12456)
@@ -102,5 +102,5 @@
 	fwrite(&length,sizeof(int),1,fid);
 	fwrite(name,length,1,fid);
-	xfree((void**)&name);
+	xDelete<char>(name);
 
 	/*Now write time and step: */
Index: /issm/trunk-jpl/src/c/objects/ExternalResults/DoubleExternalResult.cpp
===================================================================
--- /issm/trunk-jpl/src/c/objects/ExternalResults/DoubleExternalResult.cpp	(revision 12455)
+++ /issm/trunk-jpl/src/c/objects/ExternalResults/DoubleExternalResult.cpp	(revision 12456)
@@ -101,5 +101,5 @@
 	fwrite(&length,sizeof(int),1,fid);
 	fwrite(name,length,1,fid);
-	xfree((void**)&name);
+	xDelete<char>(name);
 
 	/*Now write time and step: */
Index: /issm/trunk-jpl/src/c/objects/ExternalResults/DoubleMatExternalResult.cpp
===================================================================
--- /issm/trunk-jpl/src/c/objects/ExternalResults/DoubleMatExternalResult.cpp	(revision 12455)
+++ /issm/trunk-jpl/src/c/objects/ExternalResults/DoubleMatExternalResult.cpp	(revision 12456)
@@ -36,5 +36,5 @@
 	/*Copy result in values*/
 	if(M*N){
-		values=(double*)xmalloc(M*N*sizeof(double));
+		values=xNew<double>(M*N);
 		memcpy(values,in_values,M*N*sizeof(double));
 	}
@@ -48,5 +48,5 @@
 DoubleMatExternalResult::~DoubleMatExternalResult(){
 
-	xfree((void**)&this->values);
+	xDelete<double>(this->values);
 	return;
 }
@@ -131,5 +131,5 @@
 	fwrite(&length,sizeof(int),1,fid);
 	fwrite(name,length,1,fid);
-	xfree((void**)&name);
+	xDelete<char>(name);
 
 	/*Now write time and step: */
Index: /issm/trunk-jpl/src/c/objects/ExternalResults/DoubleVecExternalResult.cpp
===================================================================
--- /issm/trunk-jpl/src/c/objects/ExternalResults/DoubleVecExternalResult.cpp	(revision 12455)
+++ /issm/trunk-jpl/src/c/objects/ExternalResults/DoubleVecExternalResult.cpp	(revision 12456)
@@ -34,5 +34,5 @@
 
 	if(M){
-		values=(double*)xmalloc(M*sizeof(double));
+		values=xNew<double>(M);
 		memcpy(values,in_values,M*sizeof(double));
 	}
@@ -45,5 +45,5 @@
 /*FUNCTION DoubleVecExternalResult::~DoubleVecExternalResult(){{{*/
 DoubleVecExternalResult::~DoubleVecExternalResult(){
-	xfree((void**)&values);
+	xDelete<double>(values);
 	return;
 }
@@ -120,5 +120,5 @@
 	fwrite(&length,sizeof(int),1,fid);
 	fwrite(name,length,1,fid);
-	xfree((void**)&name);
+	xDelete<char>(name);
 
 	/*Now write time and step: */
Index: /issm/trunk-jpl/src/c/objects/ExternalResults/IntExternalResult.cpp
===================================================================
--- /issm/trunk-jpl/src/c/objects/ExternalResults/IntExternalResult.cpp	(revision 12455)
+++ /issm/trunk-jpl/src/c/objects/ExternalResults/IntExternalResult.cpp	(revision 12456)
@@ -102,5 +102,5 @@
 	fwrite(&length,sizeof(int),1,fid);
 	fwrite(name,length,1,fid);
-	xfree((void**)&name);
+	xDelete<char>(name);
 
 	/*Now write time and step: */
Index: /issm/trunk-jpl/src/c/objects/ExternalResults/PetscVecExternalResult.cpp
===================================================================
--- /issm/trunk-jpl/src/c/objects/ExternalResults/PetscVecExternalResult.cpp	(revision 12455)
+++ /issm/trunk-jpl/src/c/objects/ExternalResults/PetscVecExternalResult.cpp	(revision 12456)
@@ -118,5 +118,5 @@
 	fwrite(&length,sizeof(int),1,fid);
 	fwrite(name,length,1,fid);
-	xfree((void**)&name);
+	xDelete<char>(name);
 
 	/*Now write time and step: */
@@ -132,5 +132,5 @@
 
 	/*Free ressources:*/
-	xfree((void**)&serialvec);
+	xDelete<char>(serialvec);
 }
 /*}}}*/
Index: /issm/trunk-jpl/src/c/objects/ExternalResults/StringExternalResult.cpp
===================================================================
--- /issm/trunk-jpl/src/c/objects/ExternalResults/StringExternalResult.cpp	(revision 12455)
+++ /issm/trunk-jpl/src/c/objects/ExternalResults/StringExternalResult.cpp	(revision 12456)
@@ -31,5 +31,5 @@
 	id=in_id;
 	enum_type=in_enum_type;
-	value=(char*)xmalloc((strlen(in_value)+1)*sizeof(char));
+	value=xNew<char>(strlen(in_value)+1);
 	memcpy(value,in_value,(strlen(in_value)+1)*sizeof(char));
 
@@ -41,5 +41,5 @@
 /*FUNCTION StringExternalResult::~StringExternalResult(){{{*/
 StringExternalResult::~StringExternalResult(){
-	xfree((void**)&value);
+	xDelete<char>(value);
 }
 /*}}}*/
@@ -103,5 +103,5 @@
 	fwrite(&length,sizeof(int),1,fid);
 	fwrite(name,length,1,fid);
-	xfree((void**)&name);
+	xDelete<char>(name);
 
 	/*Now write time and step: */
