Index: /issm/trunk-jpl/src/c/shared/Elements/GetGlobalDofList.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Elements/GetGlobalDofList.cpp	(revision 12436)
+++ /issm/trunk-jpl/src/c/shared/Elements/GetGlobalDofList.cpp	(revision 12437)
@@ -14,5 +14,5 @@
 
 		/*Allocate:*/
-		ndof_list=(int*)xmalloc(numnodes*sizeof(int));
+		ndof_list=xNew<int>(numnodes);
 
 		/*First, figure out size of doflist: */
@@ -25,5 +25,5 @@
 		if(numdof){
 			/*Allocate: */
-			doflist=(int*)xmalloc(numdof*sizeof(int));
+			doflist=xNew<int>(numdof);
 
 			/*Populate: */
@@ -37,5 +37,5 @@
 	}
 	/*Free ressources:*/
-	xfree((void**)&ndof_list);
+	xDelete<int>(ndof_list);
 
 	return doflist;
Index: /issm/trunk-jpl/src/c/shared/Elements/GetLocalDofList.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Elements/GetLocalDofList.cpp	(revision 12436)
+++ /issm/trunk-jpl/src/c/shared/Elements/GetLocalDofList.cpp	(revision 12437)
@@ -13,6 +13,6 @@
 	if(numnodes){
 		/*allocate: */
-		ndof_list=(int*)xmalloc(numnodes*sizeof(int));
-		ngdof_list_cumulative=(int*)xmalloc(numnodes*sizeof(int));
+		ndof_list=xNew<int>(numnodes);
+		ngdof_list_cumulative=xNew<int>(numnodes);
 
 
@@ -33,5 +33,5 @@
 		if(numdof){
 			/*Allocate: */
-			doflist=(int*)xmalloc(numdof*sizeof(int));
+			doflist=xNew<int>(numdof);
 
 			/*Populate: */
@@ -55,6 +55,6 @@
 
 	/*Free ressources:*/
-	xfree((void**)&ndof_list);
-	xfree((void**)&ngdof_list_cumulative);
+	xDelete<int>(ndof_list);
+	xDelete<int>(ngdof_list_cumulative);
 
 	/*CLean-up and return*/
Index: /issm/trunk-jpl/src/c/shared/Elements/TransformLoadVectorCoord.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Elements/TransformLoadVectorCoord.cpp	(revision 12436)
+++ /issm/trunk-jpl/src/c/shared/Elements/TransformLoadVectorCoord.cpp	(revision 12437)
@@ -8,5 +8,5 @@
 
 	/*All nodes have the same Coordinate System*/
-	cs_array=(int*)xmalloc(numnodes*sizeof(int));
+	cs_array=xNew<int>(numnodes);
 	for(int i=0;i<numnodes;i++) cs_array[i]=cs_enum;
 
@@ -15,5 +15,5 @@
 
 	/*Clean-up*/
-	xfree((void**)&cs_array);
+	xDelete<int>(cs_array);
 }
 
@@ -35,5 +35,5 @@
 
 	/*Copy current load vector*/
-	values=(double*)xmalloc(pe->nrows*sizeof(double));
+	values=xNew<double>(pe->nrows);
 	for(i=0;i<pe->nrows;i++) values[i]=pe->values[i];
 
@@ -46,6 +46,6 @@
 				&pe->values[0],0);
 
-	/*Free Matrix*/
-	xfree((void**)&transform);
-	xfree((void**)&values);
+	/*Free Matrices*/
+	xDelete<double>(transform);
+	xDelete<double>(values);
 }
Index: /issm/trunk-jpl/src/c/shared/Elements/TransformSolutionCoord.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Elements/TransformSolutionCoord.cpp	(revision 12436)
+++ /issm/trunk-jpl/src/c/shared/Elements/TransformSolutionCoord.cpp	(revision 12437)
@@ -9,5 +9,5 @@
 
 	/*All nodes have the same Coordinate System*/
-	cs_array=(int*)xmalloc(numnodes*sizeof(int));
+	cs_array=xNew<int>(numnodes);
 	for(int i=0;i<numnodes;i++) cs_array[i]=cs_enum;
 
@@ -16,5 +16,5 @@
 
 	/*Clean-up*/
-	xfree((void**)&cs_array);
+	xDelete<int>(cs_array);
 }
 
@@ -36,5 +36,5 @@
 
 	/*Copy current solution vector*/
-	values=(double*)xmalloc(numdofs*sizeof(double));
+	values=xNew<double>(numdofs);
 	for(i=0;i<numdofs;i++) values[i]=solution[i];
 
@@ -47,6 +47,6 @@
 				&solution[0],0);
 
-	/*Free Matrix*/
-	xfree((void**)&transform);
-	xfree((void**)&values);
+	/*Free Matrices*/
+	xDelete<double>(transform);
+	xDelete<double>(values);
 }
Index: /issm/trunk-jpl/src/c/shared/Exceptions/exprintf.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Exceptions/exprintf.cpp	(revision 12436)
+++ /issm/trunk-jpl/src/c/shared/Exceptions/exprintf.cpp	(revision 12437)
@@ -9,5 +9,5 @@
 #include <stdarg.h>
 #include <stdio.h>
-#include "../Alloc/alloc.h"
+#include "../Alloc/xNewDelete.h"
 
 char* exprintf(const char* format,...){
@@ -17,5 +17,5 @@
 
 	/*Assum nobody will print more that 1024 characters!*/
-	string=(char*)xmalloc(1024*sizeof(char));//assume that nobody will print more than 1024 characters at once.
+	string=xNew<char>(1024);//assume that nobody will print more than 1024 characters at once.
                                                                                                                                                                                                      
 	//variable list of arguments
Index: /issm/trunk-jpl/src/c/shared/Exp/DomainOutlineRead.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Exp/DomainOutlineRead.cpp	(revision 12436)
+++ /issm/trunk-jpl/src/c/shared/Exp/DomainOutlineRead.cpp	(revision 12437)
@@ -88,6 +88,6 @@
 
 		/*Allocate vertices: */
-		x=(double*)xmalloc(n*sizeof(double));
-		y=(double*)xmalloc(n*sizeof(double));
+		x=xNew<double>(n);
+		y=xNew<double>(n);
 		
 		/*Read vertices: */
Index: /issm/trunk-jpl/src/c/shared/Matrix/MatrixUtils.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Matrix/MatrixUtils.cpp	(revision 12436)
+++ /issm/trunk-jpl/src/c/shared/Matrix/MatrixUtils.cpp	(revision 12437)
@@ -69,14 +69,9 @@
 
 	if (idima*idimc*(idimb+idimd) <= idimb*idimd*(idima+idimc)) {
-		dtemp=(double *) xmalloc(idima*idimc*sizeof(double));
-
-		MatrixMultiply(a    ,nrowa,ncola,itrna,
-				   b    ,nrowb,ncolb,itrnb,
-				   dtemp,0);
-		MatrixMultiply(dtemp,idima,idimc,0    ,
-				   c    ,nrowc,ncolc,itrnc,
-				   d    ,iaddd);
-
-		xfree((void **)&dtemp);
+		dtemp=xNew<double>(idima*idimc);
+
+		MatrixMultiply(a,nrowa,ncola,itrna,b,nrowb,ncolb,itrnb,dtemp,0);
+		MatrixMultiply(dtemp,idima,idimc,0,c,nrowc,ncolc,itrnc,d,iaddd);
+		xDelete<double>(dtemp);
 	}
 
@@ -84,14 +79,9 @@
 
 	else {
-		dtemp=(double *) xmalloc(idimb*idimd*sizeof(double));
-
-		MatrixMultiply(b    ,nrowb,ncolb,itrnb,
-				   c    ,nrowc,ncolc,itrnc,
-				   dtemp,0);
-		MatrixMultiply(a    ,nrowa,ncola,itrna,
-				   dtemp,idimb,idimd,0    ,
-				   d    ,iaddd);
-
-		xfree((void **)&dtemp);
+		dtemp=xNew<double>(idimb*idimd);
+
+		MatrixMultiply(b,nrowb,ncolb,itrnb,c,nrowc,ncolc,itrnc,dtemp,0);
+		MatrixMultiply(a,nrowa,ncola,itrna,dtemp,idimb,idimd,0,d,iaddd);
+		xDelete<double>(dtemp);
 	}
 
@@ -198,7 +188,6 @@
 	ncol=nrow;
 	det=1.;
-
-	pivrc = (int (*)[2]) xmalloc((nrow*2)*sizeof(int));
-	pindx = (int (*)   ) xcalloc( nrow   ,sizeof(int));
+	pivrc =(int(*)[2])xNew<int>(nrow*2);
+	pindx =xNew<int>(nrow);
 
 /*  loop over the rows/columns of the matrix  */
@@ -221,6 +210,6 @@
 
 		if (fabs(pivot) < DBL_EPSILON) {
-			xfree((void **)&pivrc);
-			xfree((void **)&pindx);
+			xfree((void**)&pivrc);
+			xDelete<int>(pindx);
 			_error_("Pivot %f less than machine epsilon",pivot);
 			noerr=0;
@@ -339,6 +328,6 @@
 		*pdet=det;
 
-	xfree((void **)&pivrc);
-	xfree((void **)&pindx);
+	xfree((void**)&pivrc);
+	xDelete<int>(pindx);
 
 	return noerr;
Index: /issm/trunk-jpl/src/c/shared/Numerics/OptionsFromAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Numerics/OptionsFromAnalysis.cpp	(revision 12436)
+++ /issm/trunk-jpl/src/c/shared/Numerics/OptionsFromAnalysis.cpp	(revision 12437)
@@ -65,12 +65,10 @@
 
 	/*Free ressources*/
-	xfree((void**)&analyses);
+	xDelete<double>(analyses);
 	for(i=0;i<numanalyses;i++){
 		string=strings[i];
-		xfree((void**)&string);
+		xDelete<char>(string);
 	}
-	xfree((void**)&strings);
-
-
+	xDelete<char*>(strings);
 	return outstring;
 }
Index: /issm/trunk-jpl/src/c/shared/Numerics/PetscOptionsFromAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Numerics/PetscOptionsFromAnalysis.cpp	(revision 12436)
+++ /issm/trunk-jpl/src/c/shared/Numerics/PetscOptionsFromAnalysis.cpp	(revision 12437)
@@ -39,4 +39,4 @@
 
 	/*Free ressources:*/
-	xfree((void**)&options);
+	xDelete<char>(options);
 }
