Index: /issm/trunk-jpl/src/c/solutions/AnalysisConfiguration.cpp
===================================================================
--- /issm/trunk-jpl/src/c/solutions/AnalysisConfiguration.cpp	(revision 12438)
+++ /issm/trunk-jpl/src/c/solutions/AnalysisConfiguration.cpp	(revision 12439)
@@ -29,5 +29,5 @@
 		case DiagnosticSolutionEnum:
 			numanalyses=5;
-			analyses=(int*)xmalloc(numanalyses*sizeof(int));
+			analyses=xNew<int>(numanalyses);
 			analyses[0]=DiagnosticHorizAnalysisEnum;
 			analyses[1]=DiagnosticVertAnalysisEnum;
@@ -39,5 +39,5 @@
 		case SteadystateSolutionEnum:
 			numanalyses=8;
-			analyses=(int*)xmalloc(numanalyses*sizeof(int));
+			analyses=xNew<int>(numanalyses);
 			analyses[0]=DiagnosticHorizAnalysisEnum;
 			analyses[1]=DiagnosticVertAnalysisEnum;
@@ -52,5 +52,5 @@
 		case ThermalSolutionEnum:
 			numanalyses=2;
-			analyses=(int*)xmalloc(numanalyses*sizeof(int));
+			analyses=xNew<int>(numanalyses);
 			analyses[0]=ThermalAnalysisEnum;
 			analyses[1]=MeltingAnalysisEnum;
@@ -59,5 +59,5 @@
 		case EnthalpySolutionEnum:
 			numanalyses=1;
-			analyses=(int*)xmalloc(numanalyses*sizeof(int));
+			analyses=xNew<int>(numanalyses);
 			analyses[0]=EnthalpyAnalysisEnum;
 			break;
@@ -65,5 +65,5 @@
 		case HydrologySolutionEnum:
 			numanalyses=3;
-			analyses=(int*)xmalloc(numanalyses*sizeof(int));
+			analyses=xNew<int>(numanalyses);
 			analyses[0]=HydrologyAnalysisEnum;
 			analyses[1]=SurfaceSlopeAnalysisEnum;
@@ -73,5 +73,5 @@
 		case PrognosticSolutionEnum:
 			numanalyses=1;
-			analyses=(int*)xmalloc(numanalyses*sizeof(int));
+			analyses=xNew<int>(numanalyses);
 			analyses[0]=PrognosticAnalysisEnum;
 			break;
@@ -79,5 +79,5 @@
 		case BalancethicknessSolutionEnum:
 			numanalyses=1;
-			analyses=(int*)xmalloc(numanalyses*sizeof(int));
+			analyses=xNew<int>(numanalyses);
 			analyses[0]=BalancethicknessAnalysisEnum;
 			break;
@@ -85,5 +85,5 @@
 		case SurfaceSlopeSolutionEnum:
 			numanalyses=1;
-			analyses=(int*)xmalloc(numanalyses*sizeof(int));
+			analyses=xNew<int>(numanalyses);
 			analyses[0]=SurfaceSlopeAnalysisEnum;
 			break;
@@ -91,5 +91,5 @@
 		case BedSlopeSolutionEnum:
 			numanalyses=1;
-			analyses=(int*)xmalloc(numanalyses*sizeof(int));
+			analyses=xNew<int>(numanalyses);
 			analyses[0]=BedSlopeAnalysisEnum;
 			break;
@@ -97,5 +97,5 @@
 		case TransientSolutionEnum:
 			numanalyses=9;
-			analyses=(int*)xmalloc(numanalyses*sizeof(int));
+			analyses=xNew<int>(numanalyses);
 			analyses[0]=DiagnosticHorizAnalysisEnum;
 			analyses[1]=DiagnosticVertAnalysisEnum;
@@ -117,4 +117,4 @@
 	if(pnumanalyses) *pnumanalyses=numanalyses;
 	if(panalyses)    *panalyses=analyses;
-	else              xfree((void**)&analyses);
+	else              xDelete<int>(analyses);
 }
Index: /issm/trunk-jpl/src/c/solutions/ProcessArguments.cpp
===================================================================
--- /issm/trunk-jpl/src/c/solutions/ProcessArguments.cpp	(revision 12438)
+++ /issm/trunk-jpl/src/c/solutions/ProcessArguments.cpp	(revision 12439)
@@ -21,8 +21,8 @@
 	if(argc<3)_error_("Usage error: missing model name");
 	modelname=argv[3];
-	binfilename    = (char*)xmalloc((strlen(modelname)+strlen(".bin")   +1)*sizeof(char)); sprintf(binfilename,   "%s%s",modelname,".bin");
-	outbinfilename = (char*)xmalloc((strlen(modelname)+strlen(".outbin")+1)*sizeof(char)); sprintf(outbinfilename,"%s%s",modelname,".outbin");
-	petscfilename  = (char*)xmalloc((strlen(modelname)+strlen(".petsc") +1)*sizeof(char)); sprintf(petscfilename, "%s%s",modelname,".petsc");
-	lockfilename   = (char*)xmalloc((strlen(modelname)+strlen(".lock")  +1)*sizeof(char)); sprintf(lockfilename,  "%s%s",modelname,".lock");
+	binfilename    = xNew<char>(strlen(modelname)+strlen(".bin")   +1); sprintf(binfilename,   "%s%s",modelname,".bin");
+	outbinfilename = xNew<char>(strlen(modelname)+strlen(".outbin")+1); sprintf(outbinfilename,"%s%s",modelname,".outbin");
+	petscfilename  = xNew<char>(strlen(modelname)+strlen(".petsc") +1); sprintf(petscfilename, "%s%s",modelname,".petsc");
+	lockfilename   = xNew<char>(strlen(modelname)+strlen(".lock")  +1); sprintf(lockfilename,  "%s%s",modelname,".lock");
 
 	/*Clean up and assign output pointer*/
Index: /issm/trunk-jpl/src/c/solutions/control_core.cpp
===================================================================
--- /issm/trunk-jpl/src/c/solutions/control_core.cpp	(revision 12438)
+++ /issm/trunk-jpl/src/c/solutions/control_core.cpp	(revision 12439)
@@ -70,6 +70,6 @@
 
 	/*Initialize responses: */
-	J=(double*)xmalloc(nsteps*sizeof(double));
-	step_responses=(int*)xmalloc(num_responses*sizeof(int));
+	J=xNew<double>(nsteps);
+	step_responses=xNew<int>(num_responses);
 		
 	/*Initialize some of the BrentSearch arguments: */
@@ -120,9 +120,9 @@
 	cleanup_and_return:
 	/*Free ressources: */
-	xfree((void**)&control_type);
-	xfree((void**)&responses);
-	xfree((void**)&step_responses);
-	xfree((void**)&maxiter);
-	xfree((void**)&cm_jump);
-	xfree((void**)&J);
+	xDelete<int>(control_type);
+	xDelete<int>(step_responses);
+	xDelete<double>(maxiter);
+	xDelete<double>(responses);
+	xDelete<double>(cm_jump);
+	xDelete<double>(J);
 }
Index: /issm/trunk-jpl/src/c/solutions/controlrestart.cpp
===================================================================
--- /issm/trunk-jpl/src/c/solutions/controlrestart.cpp	(revision 12438)
+++ /issm/trunk-jpl/src/c/solutions/controlrestart.cpp	(revision 12439)
@@ -33,4 +33,4 @@
 
 	/*Clean up and return*/
-	xfree((void**)&control_type);
+	xDelete<int>(control_type);
 }
Index: /issm/trunk-jpl/src/c/solutions/controltao_core.cpp
===================================================================
--- /issm/trunk-jpl/src/c/solutions/controltao_core.cpp	(revision 12438)
+++ /issm/trunk-jpl/src/c/solutions/controltao_core.cpp	(revision 12439)
@@ -50,5 +50,5 @@
 	femmodel->parameters->FindParam(&dummy,NULL,NULL,InversionMaxiterPerStepEnum);
 	femmodel->parameters->SetParam(false,SaveResultsEnum);
-	maxiter=nsteps*(int)dummy[0]; xfree((void**)&dummy);
+	maxiter=nsteps*(int)dummy[0]; xDelete<double>(dummy);
 
 	/*Initialize TAO*/
@@ -95,5 +95,5 @@
 
 	/*Clean up and return*/
-	xfree((void**)&control_list);
+	xDelete<int>(control_list);
 	xdelete(&X);
 	TaoDestroy(&tao);
@@ -125,5 +125,5 @@
 
 	/*Prepare objective function*/
-	cost_functions=(int*)xmalloc(num_cost_functions*sizeof(int));
+	cost_functions=xNew<int>(num_cost_functions);
 	for(int i=0;i<num_cost_functions;i++) cost_functions[i]=(int)cost_functionsd[i]; //FIXME
 	femmodel->parameters->SetParam(cost_functions,1,num_cost_functions,StepResponsesEnum);
@@ -146,6 +146,6 @@
 
 	/*Clean-up and return*/
-	xfree((void**)&cost_functions);
-	xfree((void**)&cost_functionsd);
+	xDelete<int>(cost_functions);
+	xDelete<double>(cost_functionsd);
 	return 0;
 }
@@ -175,5 +175,5 @@
 
 	/*Clean-up and return*/
-	xfree((void**)&responses);
+	xDelete<int>(responses);
 	return 0;
 }
Index: /issm/trunk-jpl/src/c/solutions/diagnostic_core.cpp
===================================================================
--- /issm/trunk-jpl/src/c/solutions/diagnostic_core.cpp	(revision 12438)
+++ /issm/trunk-jpl/src/c/solutions/diagnostic_core.cpp	(revision 12439)
@@ -105,4 +105,4 @@
 
 	/*Free ressources:*/
-	xfree((void**)&requested_outputs);
+	xDelete<int>(requested_outputs);
 }
Index: /issm/trunk-jpl/src/c/solutions/gradient_core.cpp
===================================================================
--- /issm/trunk-jpl/src/c/solutions/gradient_core.cpp	(revision 12438)
+++ /issm/trunk-jpl/src/c/solutions/gradient_core.cpp	(revision 12439)
@@ -48,4 +48,4 @@
 
 	/*Clean up and return*/
-	xfree((void**)&norm_list);
+	xDelete<double>(norm_list);
 }
Index: /issm/trunk-jpl/src/c/solutions/issm.cpp
===================================================================
--- /issm/trunk-jpl/src/c/solutions/issm.cpp	(revision 12438)
+++ /issm/trunk-jpl/src/c/solutions/issm.cpp	(revision 12439)
@@ -144,9 +144,9 @@
 
 	/*Free ressources */
-	xfree((void**)&analyses);
-	xfree((void**)&lockfilename);
-	xfree((void**)&binfilename);
-	xfree((void**)&outbinfilename);
-	xfree((void**)&petscfilename);
+	xDelete<int>(analyses);
+	xDelete<char>(lockfilename);
+	xDelete<char>(binfilename);
+	xDelete<char>(outbinfilename);
+	xDelete<char>(petscfilename);
 	delete femmodel;
 
Index: /issm/trunk-jpl/src/c/solutions/kriging.cpp
===================================================================
--- /issm/trunk-jpl/src/c/solutions/kriging.cpp	(revision 12438)
+++ /issm/trunk-jpl/src/c/solutions/kriging.cpp	(revision 12439)
@@ -86,14 +86,14 @@
 
 	/*Free ressources */
-	xfree((void**)&lockfilename);
-	xfree((void**)&binfilename);
-	xfree((void**)&outbinfilename);
-	xfree((void**)&x);
-	xfree((void**)&y);
-	xfree((void**)&data);
-	xfree((void**)&x_interp);
-	xfree((void**)&y_interp);
-	xfree((void**)&predictions);
-	xfree((void**)&error);
+	xDelete<char>(lockfilename);
+	xDelete<char>(binfilename);
+	xDelete<char>(outbinfilename);
+	xDelete<double>(x);
+	xDelete<double>(y);
+	xDelete<double>(data);
+	xDelete<double>(x_interp);
+	xDelete<double>(y_interp);
+	xDelete<double>(predictions);
+	xDelete<double>(error);
 	delete options;
 	delete results;
@@ -124,7 +124,7 @@
 	if(argc<2)_error_("Usage error: missing model name");
 	modelname=argv[2];
-	binfilename    = (char*)xmalloc((strlen(modelname)+strlen(".bin")   +1)*sizeof(char)); sprintf(binfilename,   "%s%s",modelname,".bin");
-	outbinfilename = (char*)xmalloc((strlen(modelname)+strlen(".outbin")+1)*sizeof(char)); sprintf(outbinfilename,"%s%s",modelname,".outbin");
-	lockfilename   = (char*)xmalloc((strlen(modelname)+strlen(".lock")  +1)*sizeof(char)); sprintf(lockfilename,  "%s%s",modelname,".lock");
+	binfilename    = xNew<char>((strlen(modelname)+strlen(".bin")   +1)); sprintf(binfilename,   "%s%s",modelname,".bin");
+	outbinfilename = xNew<char>((strlen(modelname)+strlen(".outbin")+1)); sprintf(outbinfilename,"%s%s",modelname,".outbin");
+	lockfilename   = xNew<char>((strlen(modelname)+strlen(".lock")  +1)); sprintf(lockfilename,  "%s%s",modelname,".lock");
 
 	/*Clean up and assign output pointer*/
Index: /issm/trunk-jpl/src/c/solutions/steadystate_core.cpp
===================================================================
--- /issm/trunk-jpl/src/c/solutions/steadystate_core.cpp	(revision 12438)
+++ /issm/trunk-jpl/src/c/solutions/steadystate_core.cpp	(revision 12439)
@@ -93,4 +93,4 @@
 
 	/*Free ressources:*/
-	xfree((void**)&requested_outputs);
+	xDelete<int>(requested_outputs);
 }
Index: /issm/trunk-jpl/src/c/solutions/transient_core.cpp
===================================================================
--- /issm/trunk-jpl/src/c/solutions/transient_core.cpp	(revision 12438)
+++ /issm/trunk-jpl/src/c/solutions/transient_core.cpp	(revision 12439)
@@ -147,4 +147,4 @@
 
 	/*Free ressources:*/
-	xfree((void**)&requested_outputs);
+	xDelete<int>(requested_outputs);
 }
