Index: /issm/trunk-jpl/src/c/classes/objects/KML/KMLFileReadUtils.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/objects/KML/KMLFileReadUtils.cpp	(revision 12914)
+++ /issm/trunk-jpl/src/c/classes/objects/KML/KMLFileReadUtils.cpp	(revision 12915)
@@ -29,7 +29,7 @@
 	int     c;
 	int     ibuf=0,buflen=1024,bufblk=1024;
-	char    *buffer=NULL,*bufferc=NULL;
-
-	buffer=(char *) xmalloc(buflen*sizeof(char));
+	char    *buffer=NULL,*bufferc=NULL,**pcom2=NULL;
+
+	buffer=xNew<char>(buflen);
 	buffer[0]='\0';
 
@@ -57,9 +57,14 @@
 					if (pncom && ppcom) {
 						(*pncom)++;
-						*ppcom=(char **) xrealloc(*ppcom,*pncom*sizeof(char*));
+						pcom2=xNew<char*>(*pncom);
+						memcpy(pcom2,*ppcom,(*pncom-1)*sizeof(char*));
+						xDelete<char*>(*ppcom);
+						*ppcom=pcom2;
+						pcom2=NULL;
+//						*ppcom=(char **) xrealloc(*ppcom,*pncom*sizeof(char*));
 						(*ppcom)[*pncom-1]=bufferc;
 					}
 					else
-						xfree((void**)&bufferc);
+						xDelete<char>(bufferc);
 					inew=1;
 					continue;
@@ -98,9 +103,14 @@
 					if (pncom && ppcom) {
 						(*pncom)++;
-						*ppcom=(char **) xrealloc(*ppcom,*pncom*sizeof(char*));
+						pcom2=xNew<char*>(*pncom);
+						memcpy(pcom2,*ppcom,(*pncom-1)*sizeof(char*));
+						xDelete<char*>(*ppcom);
+						*ppcom=pcom2;
+						pcom2=NULL;
+//						*ppcom=(char **) xrealloc(*ppcom,*pncom*sizeof(char*));
 						(*ppcom)[*pncom-1]=bufferc;
 					}
 					else
-						xfree((void**)&bufferc);
+						xDelete<char>(bufferc);
 			}
 			else {
@@ -133,5 +143,5 @@
 
 	if (!ibuf)
-		xfree((void**)&buffer);
+		xDelete<char>(buffer);
 
 	return(buffer);
@@ -149,5 +159,5 @@
 	char*   buffer=NULL;
 
-	buffer=(char *) xmalloc(buflen*sizeof(char));
+	buffer=xNew<char>(buflen);
 	buffer[0]='\0';
 
@@ -172,5 +182,5 @@
 				for (i=ibuf-1; i>=0; i--)
 					ungetc(buffer[i],fid);
-				xfree((void**)&buffer);
+				xDelete<char>(buffer);
 				return(buffer);
 			}
@@ -197,5 +207,5 @@
 
 	if (!ibuf)
-		xfree((void**)&buffer);
+		xDelete<char>(buffer);
 
 	return(buffer);
@@ -209,5 +219,5 @@
 /*  add the specified character to the token buffer  */
 
-	char*   buffer=NULL;
+	char*   buffer2=NULL;
 
 /*  check buffer length and realloc if necessary  */
@@ -215,5 +225,10 @@
 	if (*pibuf+2 > *pbuflen) {
 		*pbuflen+=bufblk;
-		*pbuffer=(char *) xrealloc(*pbuffer,*pbuflen*sizeof(char));
+		buffer2=xNew<char>(*pbuflen);
+		memcpy(buffer2,*pbuffer,(*pbuflen-bufblk)*sizeof(char));
+		xDelete<char>(*pbuffer);
+		*pbuffer=buffer2;
+		buffer2=NULL;
+//		*pbuffer=(char *) xrealloc(*pbuffer,*pbuflen*sizeof(char));
 	}
 
@@ -248,5 +263,5 @@
 /*  strtok modifies ktag, so work on copy  */
 
-	ktagi=(char *) xmalloc((strlen(ktag)+1)*sizeof(char));
+	ktagi=xNew<char>(strlen(ktag)+1);
 	memcpy(ktagi,ktag,(strlen(ktag)+1)*sizeof(char));
 
@@ -258,7 +273,7 @@
 	if (!pname) {
 		if (maxlen)
-			pname=(char *) xmalloc((maxlen       +1)*sizeof(char));
-		else
-			pname=(char *) xmalloc((strlen(ktokn)+1)*sizeof(char));
+			pname=xNew<char>(maxlen       +1);
+		else
+			pname=xNew<char>(strlen(ktokn)+1);
 	}
 
@@ -271,5 +286,5 @@
 		memcpy(pname,ktokn,(strlen(ktokn)+1)*sizeof(char));
 
-	xfree((void**)&ktagi);
+	xDelete<char>(ktagi);
 
 	if (m)
@@ -293,5 +308,5 @@
 /*  strtok modifies ktag, so work on copy  */
 
-	ktagi=(char *) xmalloc((strlen(ktag)+1)*sizeof(char));
+	ktagi=xNew<char>(strlen(ktag)+1);
 	memcpy(ktagi,ktag,(strlen(ktag)+1)*sizeof(char));
 
@@ -315,5 +330,5 @@
 	}
 
-	xfree((void**)&ktagi);
+	xDelete<char>(ktagi);
 
 /*  check for xml declaration, dtd declaration, or solo tag  */
@@ -343,5 +358,5 @@
 
 	sscanf(kstr,"%d",pival);
-	xfree((void**)&kstr);
+	xDelete<char>(kstr);
 
 /*  get additional token and compare to closing tag  */
@@ -355,5 +370,5 @@
 		  {_error2_("KMLFileTokenParse -- Missing closing tag for " << ktag << ".\n");}
 		else
-			xfree((void**)&kstr);
+			xDelete<char>(kstr);
 
 //	_pprintLine_("KMLFileTokenParse -- " << ktag << "=" << *pival << ".");
@@ -377,5 +392,5 @@
 	sscanf(kstr,"%d",&ival);
 	*pbval=(bool)ival;
-	xfree((void**)&kstr);
+	xDelete<char>(kstr);
 
 /*  get additional token and compare to closing tag  */
@@ -389,5 +404,5 @@
 		  {_error2_("KMLFileTokenParse -- Missing closing tag for " << ktag << ".\n");}
 		else
-			xfree((void**)&kstr);
+			xDelete<char>(kstr);
 
 //	_pprintLine_("KMLFileTokenParse -- " << ktag << "=" << (*pbval ? "true" : "false") << ".");
@@ -422,7 +437,7 @@
 	if (!pstr) {
 		if (maxlen)
-			pstr=(char *) xmalloc((maxlen      +1)*sizeof(char));
-		else
-			pstr=(char *) xmalloc((strlen(kstr)+1)*sizeof(char));
+			pstr=xNew<char>(maxlen      +1);
+		else
+			pstr=xNew<char>(strlen(kstr)+1);
 	}
 
@@ -435,5 +450,5 @@
 		memcpy(pstr,kstr,(strlen(kstr)+1)*sizeof(char));
 
-	xfree((void**)&kstr);
+	xDelete<char>(kstr);
 
 	if (m)
@@ -450,5 +465,5 @@
 		  {_error2_("KMLFileTokenParse -- Missing closing tag for " << ktag << ".\n");}
 		else
-			xfree((void**)&kstr);
+			xDelete<char>(kstr);
 
 //	_pprintLine_("KMLFileTokenParse -- " << ktag << "=\"" << pstr << "\".");
@@ -472,5 +487,5 @@
 
 	sscanf(kstr,"%g",pfval);
-	xfree((void**)&kstr);
+	xDelete<char>(kstr);
 
 /*  get additional token and compare to closing tag  */
@@ -484,5 +499,5 @@
 		  {_error2_("KMLFileTokenParse -- Missing closing tag for " << ktag << ".\n");}
 		else
-			xfree((void**)&kstr);
+			xDelete<char>(kstr);
 
 //	_pprintLine_("KMLFileTokenParse -- " << ktag << "=" << *pfval << ".");
@@ -506,5 +521,5 @@
 
 	sscanf(kstr,"%lg",pdval);
-	xfree((void**)&kstr);
+	xDelete<char>(kstr);
 
 /*  get additional token and compare to closing tag  */
@@ -518,5 +533,5 @@
 		  {_error2_("KMLFileTokenParse -- Missing closing tag for " << ktag << ".\n");}
 		else
-			xfree((void**)&kstr);
+			xDelete<char>(kstr);
 
 //	_pprintLine_("KMLFileTokenParse -- " << ktag << "=" << *pdval << ".");
@@ -544,7 +559,7 @@
 	if (!*pdval)
 		if (maxlen)
-			*pdval=(double *) xmalloc(maxlen              *sizeof(double));
-		else
-			*pdval=(double *) xmalloc(((strlen(kstr)+1)/2)*sizeof(double));
+			*pdval=xNew<IssmDouble>(maxlen            );
+		else
+			*pdval=xNew<IssmDouble>((strlen(kstr)+1)/2);
 
 /*  loop through string to get all values  */
@@ -558,8 +573,8 @@
 		ktok=strtok(NULL,delim);
 	}
-	xfree((void**)&kstr);
-
-	if (!maxlen)
-		*pdval=(double *) xrealloc(*pdval,(i+1)*sizeof(double));
+	xDelete<char>(kstr);
+
+//	if (!maxlen)
+//		*pdval=(double *) xrealloc(*pdval,(i+1)*sizeof(double));
 
 	if (m)
@@ -576,5 +591,5 @@
 		  {_error2_("KMLFileTokenParse -- Missing closing tag for " << ktag << ".\n");}
 		else
-			xfree((void**)&kstr);
+			xDelete<char>(kstr);
 
 //	_pprintLine_("KMLFileTokenParse -- " << ktag << "=...");
@@ -604,7 +619,7 @@
 	if (!*pdval)
 		if (maxlen)
-			*pdval=(double *) xmalloc((maxlen*n)          *sizeof(double));
-		else
-			*pdval=(double *) xmalloc(((strlen(kstr)+1)/2)*sizeof(double));
+			*pdval=xNew<IssmDouble>(maxlen*n          );
+		else
+			*pdval=xNew<IssmDouble>((strlen(kstr)+1)/2);
 
 /*  loop through string to get all values  */
@@ -619,8 +634,8 @@
 		ktok=strtok(NULL,delim);
 	}
-	xfree((void**)&kstr);
-
-	if (!maxlen)
-		*pdval=(double *) xrealloc(*pdval,((i+1)*n)*sizeof(double));
+	xDelete<char>(kstr);
+
+//	if (!maxlen)
+//		*pdval=(double *) xrealloc(*pdval,((i+1)*n)*sizeof(double));
 
 	if (m)
@@ -640,5 +655,5 @@
 		  {_error2_("KMLFileTokenParse -- Missing closing tag for " << ktag << ".\n");}
 		else
-			xfree((void**)&kstr);
+			xDelete<char>(kstr);
 
 //	_pprintLine_("KMLFileTokenParse -- " << ktag << "=...");
@@ -668,5 +683,5 @@
 				 (!strncmp(&(kstr[2]),&(ktag[1]),(strcspn(ktag," >")-1)/sizeof(char)))) {
 			_pprintLine_("KMLFileTagSkip -- closing tag " << kstr << ".");
-			xfree((void**)&kstr);
+			xDelete<char>(kstr);
 			return(0);
 		}
@@ -688,5 +703,5 @@
 		}
 
-		xfree((void**)&kstr);
+		xDelete<char>(kstr);
 	}
 
Index: /issm/trunk-jpl/src/c/classes/objects/KML/KML_Attribute.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/objects/KML/KML_Attribute.cpp	(revision 12914)
+++ /issm/trunk-jpl/src/c/classes/objects/KML/KML_Attribute.cpp	(revision 12915)
@@ -32,6 +32,6 @@
 KML_Attribute::~KML_Attribute(){
 
-	if (name      ) xfree((void**)&name);
-	if (value     ) xfree((void**)&value);
+	if (name      ) xDelete<char>(name);
+	if (value     ) xDelete<char>(value);
 
 }
@@ -100,8 +100,8 @@
 void  KML_Attribute::Alloc(const char* namei,const char* valuei){
 
-	name =(char *) xmalloc((strlen(namei )+1)*sizeof(char));
+	name =xNew<char>(strlen(namei )+1);
 	memcpy(name,namei,(strlen(namei)+1)*sizeof(char));
 
-	value=(char *) xmalloc((strlen(valuei)+1)*sizeof(char));
+	value=xNew<char>(strlen(valuei)+1);
 	memcpy(value,valuei,(strlen(valuei)+1)*sizeof(char));
 
@@ -121,9 +121,9 @@
 
 	if (!value || !strlen(value)) {
-		*pvalueo=(char *) xmalloc((strlen(deflt)+1)*sizeof(char));
+		*pvalueo=xNew<char>(strlen(deflt)+1);
 		memcpy(*pvalueo,deflt,(strlen(deflt)+1)*sizeof(char));
 	}
 	else {
-		*pvalueo=(char *) xmalloc((strlen(value)+1)*sizeof(char));
+		*pvalueo=xNew<char>(strlen(value)+1);
 		memcpy(*pvalueo,value,(strlen(value)+1)*sizeof(char));
 	}
Index: /issm/trunk-jpl/src/c/classes/objects/KML/KML_Comment.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/objects/KML/KML_Comment.cpp	(revision 12914)
+++ /issm/trunk-jpl/src/c/classes/objects/KML/KML_Comment.cpp	(revision 12915)
@@ -31,5 +31,5 @@
 KML_Comment::~KML_Comment(){
 
-	if (value     ) xfree((void**)&value);
+	if (value     ) xDelete<char>(value);
 
 }
@@ -94,5 +94,5 @@
 void  KML_Comment::Alloc(const char* valuei){
 
-	value=(char *) xmalloc((strlen(valuei)+1)*sizeof(char));
+	value=xNew<char>(strlen(valuei)+1);
 	memcpy(value,valuei,(strlen(valuei)+1)*sizeof(char));
 
@@ -111,5 +111,5 @@
 void  KML_Comment::Get(char** pvalueo){
 
-	*pvalueo=(char *) xmalloc((strlen(value)+1)*sizeof(char));
+	*pvalueo=xNew<char>(strlen(value)+1);
 	memcpy(*pvalueo,value,(strlen(value)+1)*sizeof(char));
 
Index: /issm/trunk-jpl/src/c/classes/objects/KML/KML_Container.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/objects/KML/KML_Container.cpp	(revision 12914)
+++ /issm/trunk-jpl/src/c/classes/objects/KML/KML_Container.cpp	(revision 12915)
@@ -116,5 +116,5 @@
 
 	if      (!strncmp(kstr,"</Container",11)) {
-		xfree((void**)&kstr);
+		xDelete<char>(kstr);
 		return;
 	}
Index: /issm/trunk-jpl/src/c/classes/objects/KML/KML_Document.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/objects/KML/KML_Document.cpp	(revision 12914)
+++ /issm/trunk-jpl/src/c/classes/objects/KML/KML_Document.cpp	(revision 12915)
@@ -102,5 +102,5 @@
 							  &ncom,&pcom)) {
 		if      (!strncmp(kstri,"</Document",10)) {
-			xfree((void**)&kstri);
+			xDelete<char>(kstri);
 			break;
 		}
@@ -113,5 +113,5 @@
 			KML_Container::Read(fid,kstri);
 
-		xfree((void**)&kstri);
+		xDelete<char>(kstri);
 	}
 
@@ -119,6 +119,6 @@
 
 	for (ncom; ncom>0; ncom--)
-		xfree((void**)&(pcom[ncom-1]));
-	xfree((void**)&pcom);
+		xDelete<char>(pcom[ncom-1]);
+	xDelete<char*>(pcom);
 
 	return;
Index: /issm/trunk-jpl/src/c/classes/objects/KML/KML_File.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/objects/KML/KML_File.cpp	(revision 12914)
+++ /issm/trunk-jpl/src/c/classes/objects/KML/KML_File.cpp	(revision 12915)
@@ -103,5 +103,5 @@
 							  &ncom,&pcom)) {
 		if      (!strncmp(kstri,"</kml", 5)) {
-			xfree((void**)&kstri);
+			xDelete<char>(kstri);
 			break;
 		}
@@ -114,5 +114,5 @@
 			KML_Object::Read(fid,kstri);
 
-		xfree((void**)&kstri);
+		xDelete<char>(kstri);
 	}
 
@@ -120,6 +120,6 @@
 
 	for (ncom; ncom>0; ncom--)
-		xfree((void**)&(pcom[ncom-1]));
-	xfree((void**)&pcom);
+		xDelete<char>(pcom[ncom-1]);
+	xDelete<char*>(pcom);
 
 	return;
Index: /issm/trunk-jpl/src/c/classes/objects/KML/KML_Folder.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/objects/KML/KML_Folder.cpp	(revision 12914)
+++ /issm/trunk-jpl/src/c/classes/objects/KML/KML_Folder.cpp	(revision 12915)
@@ -102,5 +102,5 @@
 							  &ncom,&pcom)) {
 		if      (!strncmp(kstri,"</Folder", 8)) {
-			xfree((void**)&kstri);
+			xDelete<char>(kstri);
 			break;
 		}
@@ -113,5 +113,5 @@
 			KML_Container::Read(fid,kstri);
 
-		xfree((void**)&kstri);
+		xDelete<char>(kstri);
 	}
 
@@ -119,6 +119,6 @@
 
 	for (ncom; ncom>0; ncom--)
-		xfree((void**)&(pcom[ncom-1]));
-	xfree((void**)&pcom);
+		xDelete<char>(pcom[ncom-1]);
+	xDelete<char*>(pcom);
 
 	return;
Index: /issm/trunk-jpl/src/c/classes/objects/KML/KML_GroundOverlay.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/objects/KML/KML_GroundOverlay.cpp	(revision 12914)
+++ /issm/trunk-jpl/src/c/classes/objects/KML/KML_GroundOverlay.cpp	(revision 12915)
@@ -127,5 +127,5 @@
 							  &ncom,&pcom)) {
 		if      (!strncmp(kstri,"</GroundOverlay",15)) {
-			xfree((void**)&kstri);
+			xDelete<char>(kstri);
 			break;
 		}
@@ -151,5 +151,5 @@
 			KML_Overlay::Read(fid,kstri);
 
-		xfree((void**)&kstri);
+		xDelete<char>(kstri);
 	}
 
@@ -157,6 +157,6 @@
 
 	for (ncom; ncom>0; ncom--)
-		xfree((void**)&(pcom[ncom-1]));
-	xfree((void**)&pcom);
+		xDelete<char>(pcom[ncom-1]);
+	xDelete<char*>(pcom);
 
 	return;
Index: /issm/trunk-jpl/src/c/classes/objects/KML/KML_Icon.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/objects/KML/KML_Icon.cpp	(revision 12914)
+++ /issm/trunk-jpl/src/c/classes/objects/KML/KML_Icon.cpp	(revision 12915)
@@ -141,5 +141,5 @@
 							  &ncom,&pcom)) {
 		if      (!strncmp(kstri,"</Icon", 6)) {
-			xfree((void**)&kstri);
+			xDelete<char>(kstri);
 			break;
 		}
@@ -169,5 +169,5 @@
 			KML_Object::Read(fid,kstri);
 
-		xfree((void**)&kstri);
+		xDelete<char>(kstri);
 	}
 
@@ -175,6 +175,6 @@
 
 	for (ncom; ncom>0; ncom--)
-		xfree((void**)&(pcom[ncom-1]));
-	xfree((void**)&pcom);
+		xDelete<char>(pcom[ncom-1]);
+	xDelete<char*>(pcom);
 
 	return;
Index: /issm/trunk-jpl/src/c/classes/objects/KML/KML_LatLonBox.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/objects/KML/KML_LatLonBox.cpp	(revision 12914)
+++ /issm/trunk-jpl/src/c/classes/objects/KML/KML_LatLonBox.cpp	(revision 12915)
@@ -117,5 +117,5 @@
 							  &ncom,&pcom)) {
 		if      (!strncmp(kstri,"</LatLonBox",11)) {
-			xfree((void**)&kstri);
+			xDelete<char>(kstri);
 			break;
 		}
@@ -149,5 +149,5 @@
 			KML_Object::Read(fid,kstri);
 
-		xfree((void**)&kstri);
+		xDelete<char>(kstri);
 	}
 
@@ -155,6 +155,6 @@
 
 	for (ncom; ncom>0; ncom--)
-		xfree((void**)&(pcom[ncom-1]));
-	xfree((void**)&pcom);
+		xDelete<char>(pcom[ncom-1]);
+	xDelete<char*>(pcom);
 
 	return;
Index: /issm/trunk-jpl/src/c/classes/objects/KML/KML_LineString.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/objects/KML/KML_LineString.cpp	(revision 12914)
+++ /issm/trunk-jpl/src/c/classes/objects/KML/KML_LineString.cpp	(revision 12915)
@@ -137,5 +137,5 @@
 							  &ncom,&pcom)) {
 		if      (!strncmp(kstri,"</LineString",12)) {
-			xfree((void**)&kstri);
+			xDelete<char>(kstri);
 			break;
 		}
@@ -165,5 +165,5 @@
 			KML_Geometry::Read(fid,kstri);
 
-		xfree((void**)&kstri);
+		xDelete<char>(kstri);
 	}
 
@@ -171,6 +171,6 @@
 
 	for (ncom; ncom>0; ncom--)
-		xfree((void**)&(pcom[ncom-1]));
-	xfree((void**)&pcom);
+		xDelete<char>(pcom[ncom-1]);
+	xDelete<char*>(pcom);
 
 	return;
@@ -186,6 +186,6 @@
 /*  extract latitude and longitude into vectors  */
 
-	lat=(double *) xmalloc(ncoord*sizeof(double));
-	lon=(double *) xmalloc(ncoord*sizeof(double));
+	lat=xNew<IssmDouble>(ncoord);
+	lon=xNew<IssmDouble>(ncoord);
 	for (i=0; i<ncoord; i++) {
 		lon[i]=coords[3*i+0];
@@ -195,6 +195,6 @@
 /*  convert latitude and longitude to x and y  */
 
-	x  =(double *) xmalloc(ncoord*sizeof(double));
-	y  =(double *) xmalloc(ncoord*sizeof(double));
+	x  =xNew<IssmDouble>(ncoord);
+	y  =xNew<IssmDouble>(ncoord);
 	Ll2xyx(x,y,lat,lon,ncoord,sgn,cm,sp);
 
@@ -221,10 +221,10 @@
 	fprintf(fid,"\n");
 
-	xfree((void**)&y);
-	xfree((void**)&x);
-	xfree((void**)&lon);
-	xfree((void**)&lat);
-
-	return;
-}
-/*}}}*/
+	xDelete<IssmDouble>(y);
+	xDelete<IssmDouble>(x);
+	xDelete<IssmDouble>(lon);
+	xDelete<IssmDouble>(lat);
+
+	return;
+}
+/*}}}*/
Index: /issm/trunk-jpl/src/c/classes/objects/KML/KML_LineStyle.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/objects/KML/KML_LineStyle.cpp	(revision 12914)
+++ /issm/trunk-jpl/src/c/classes/objects/KML/KML_LineStyle.cpp	(revision 12915)
@@ -109,5 +109,5 @@
 							  &ncom,&pcom)) {
 		if      (!strncmp(kstri,"</LineStyle",11)) {
-			xfree((void**)&kstri);
+			xDelete<char>(kstri);
 			break;
 		}
@@ -125,5 +125,5 @@
 			KML_ColorStyle::Read(fid,kstri);
 
-		xfree((void**)&kstri);
+		xDelete<char>(kstri);
 	}
 
@@ -131,6 +131,6 @@
 
 	for (ncom; ncom>0; ncom--)
-		xfree((void**)&(pcom[ncom-1]));
-	xfree((void**)&pcom);
+		xDelete<char>(pcom[ncom-1]);
+	xDelete<char*>(pcom);
 
 	return;
Index: /issm/trunk-jpl/src/c/classes/objects/KML/KML_LinearRing.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/objects/KML/KML_LinearRing.cpp	(revision 12914)
+++ /issm/trunk-jpl/src/c/classes/objects/KML/KML_LinearRing.cpp	(revision 12915)
@@ -159,5 +159,6 @@
 	this->AddCommnt(ncom,pcom);
 
-	for(ncom;ncom>0;ncom--) xDelete<char>((pcom[ncom-1]));
+	for(ncom; ncom>0; ncom--)
+		xDelete<char>(pcom[ncom-1]);
 	xDelete<char*>(pcom);
 
@@ -174,6 +175,6 @@
 /*  extract latitude and longitude into vectors  */
 
-	lat=xNew<double>(ncoord);
-	lon=xNew<double>(ncoord);
+	lat=xNew<IssmDouble>(ncoord);
+	lon=xNew<IssmDouble>(ncoord);
 	for (i=0; i<ncoord; i++) {
 		lon[i]=coords[3*i+0];
@@ -183,6 +184,6 @@
 /*  convert latitude and longitude to x and y  */
 
-	x  =xNew<double>(ncoord);
-	y  =xNew<double>(ncoord);
+	x  =xNew<IssmDouble>(ncoord);
+	y  =xNew<IssmDouble>(ncoord);
 	Ll2xyx(x,y,lat,lon,ncoord,sgn,cm,sp);
 
Index: /issm/trunk-jpl/src/c/classes/objects/KML/KML_MultiGeometry.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/objects/KML/KML_MultiGeometry.cpp	(revision 12914)
+++ /issm/trunk-jpl/src/c/classes/objects/KML/KML_MultiGeometry.cpp	(revision 12915)
@@ -136,5 +136,5 @@
 							  &ncom,&pcom)) {
 		if      (!strncmp(kstri,"</MultiGeometry",15)) {
-			xfree((void**)&kstri);
+			xDelete<char>(kstri);
 			break;
 		}
@@ -177,5 +177,5 @@
 			KML_Geometry::Read(fid,kstri);
 
-		xfree((void**)&kstri);
+		xDelete<char>(kstri);
 	}
 
@@ -183,6 +183,6 @@
 
 	for (ncom; ncom>0; ncom--)
-		xfree((void**)&(pcom[ncom-1]));
-	xfree((void**)&pcom);
+		xDelete<char>(pcom[ncom-1]);
+	xDelete<char*>(pcom);
 
 	return;
Index: /issm/trunk-jpl/src/c/classes/objects/KML/KML_Object.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/objects/KML/KML_Object.cpp	(revision 12914)
+++ /issm/trunk-jpl/src/c/classes/objects/KML/KML_Object.cpp	(revision 12915)
@@ -304,5 +304,5 @@
 		katt->Get(pvalue,deflt);
 	else {
-		*pvalue=(char *) xmalloc((strlen(deflt)+1)*sizeof(char));
+		*pvalue=xNew<char>(strlen(deflt)+1);
 		memcpy(*pvalue,deflt,(strlen(deflt)+1)*sizeof(char));
 	}
Index: /issm/trunk-jpl/src/c/classes/objects/KML/KML_Overlay.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/objects/KML/KML_Overlay.cpp	(revision 12914)
+++ /issm/trunk-jpl/src/c/classes/objects/KML/KML_Overlay.cpp	(revision 12915)
@@ -106,5 +106,5 @@
 
 	if      (!strncmp(kstr,"</Overlay", 9)) {
-		xfree((void**)&kstr);
+		xDelete<char>(kstr);
 		return;
 	}
Index: /issm/trunk-jpl/src/c/classes/objects/KML/KML_Placemark.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/objects/KML/KML_Placemark.cpp	(revision 12914)
+++ /issm/trunk-jpl/src/c/classes/objects/KML/KML_Placemark.cpp	(revision 12915)
@@ -136,5 +136,5 @@
 							  &ncom,&pcom)) {
 		if      (!strncmp(kstri,"</Placemark",11)) {
-			xfree((void**)&kstri);
+			xDelete<char>(kstri);
 			break;
 		}
@@ -177,5 +177,5 @@
 			KML_Feature::Read(fid,kstri);
 
-		xfree((void**)&kstri);
+		xDelete<char>(kstri);
 	}
 
@@ -183,6 +183,6 @@
 
 	for (ncom; ncom>0; ncom--)
-		xfree((void**)&(pcom[ncom-1]));
-	xfree((void**)&pcom);
+		xDelete<char>(pcom[ncom-1]);
+	xDelete<char*>(pcom);
 
 	return;
Index: /issm/trunk-jpl/src/c/classes/objects/KML/KML_Point.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/objects/KML/KML_Point.cpp	(revision 12914)
+++ /issm/trunk-jpl/src/c/classes/objects/KML/KML_Point.cpp	(revision 12915)
@@ -122,5 +122,5 @@
 							  &ncom,&pcom)) {
 		if      (!strncmp(kstri,"</Point", 7)) {
-			xfree((void**)&kstri);
+			xDelete<char>(kstri);
 			break;
 		}
@@ -140,5 +140,5 @@
 			KML_Geometry::Read(fid,kstri);
 
-		xfree((void**)&kstri);
+		xDelete<char>(kstri);
 	}
 
@@ -146,6 +146,6 @@
 
 	for (ncom; ncom>0; ncom--)
-		xfree((void**)&(pcom[ncom-1]));
-	xfree((void**)&pcom);
+		xDelete<char>(pcom[ncom-1]);
+	xDelete<char*>(pcom);
 
 	return;
Index: /issm/trunk-jpl/src/c/classes/objects/KML/KML_PolyStyle.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/objects/KML/KML_PolyStyle.cpp	(revision 12914)
+++ /issm/trunk-jpl/src/c/classes/objects/KML/KML_PolyStyle.cpp	(revision 12915)
@@ -113,5 +113,5 @@
 							  &ncom,&pcom)) {
 		if      (!strncmp(kstri,"</PolyStyle",11)) {
-			xfree((void**)&kstri);
+			xDelete<char>(kstri);
 			break;
 		}
@@ -133,5 +133,5 @@
 			KML_ColorStyle::Read(fid,kstri);
 
-		xfree((void**)&kstri);
+		xDelete<char>(kstri);
 	}
 
@@ -139,6 +139,6 @@
 
 	for (ncom; ncom>0; ncom--)
-		xfree((void**)&(pcom[ncom-1]));
-	xfree((void**)&pcom);
+		xDelete<char>(pcom[ncom-1]);
+	xDelete<char*>(pcom);
 
 	return;
Index: /issm/trunk-jpl/src/c/classes/objects/KML/KML_Polygon.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/objects/KML/KML_Polygon.cpp	(revision 12914)
+++ /issm/trunk-jpl/src/c/classes/objects/KML/KML_Polygon.cpp	(revision 12915)
@@ -175,5 +175,5 @@
 							  &ncom,&pcom)) {
 		if      (!strncmp(kstri,"</Polygon", 9)) {
-			xfree((void**)&kstri);
+			xDelete<char>(kstri);
 			break;
 		}
@@ -203,5 +203,5 @@
 									  &ncom,&pcom)) {
 				if      (!strncmp(kstrj,"</outerBoundaryIs",17)) {
-					xfree((void**)&kstrj);
+					xDelete<char>(kstrj);
 					break;
 				}
@@ -220,5 +220,5 @@
 					KML_Geometry::Read(fid,kstrj);
 
-				xfree((void**)&kstrj);
+				xDelete<char>(kstrj);
 			}
 
@@ -230,5 +230,5 @@
 									  &ncom,&pcom)) {
 				if      (!strncmp(kstrj,"</innerBoundaryIs",17)) {
-					xfree((void**)&kstrj);
+					xDelete<char>(kstrj);
 					break;
 				}
@@ -247,5 +247,5 @@
 					KML_Geometry::Read(fid,kstrj);
 
-				xfree((void**)&kstrj);
+				xDelete<char>(kstrj);
 			}
 
@@ -254,5 +254,5 @@
 			KML_Geometry::Read(fid,kstri);
 
-		xfree((void**)&kstri);
+		xDelete<char>(kstri);
 	}
 
@@ -260,6 +260,6 @@
 
 	for (ncom; ncom>0; ncom--)
-		xfree((void**)&(pcom[ncom-1]));
-	xfree((void**)&pcom);
+		xDelete<char>(pcom[ncom-1]);
+	xDelete<char*>(pcom);
 
 	return;
Index: /issm/trunk-jpl/src/c/classes/objects/KML/KML_Style.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/objects/KML/KML_Style.cpp	(revision 12914)
+++ /issm/trunk-jpl/src/c/classes/objects/KML/KML_Style.cpp	(revision 12915)
@@ -38,10 +38,8 @@
 	if (list) {
 //		delete list;
-		if (list      ) xfree((void**)&list);
 		list      =NULL;
 	}
 	if (balloon) {
 //		delete balloon;
-		if (balloon   ) xfree((void**)&balloon);
 		balloon   =NULL;
 	}
@@ -56,10 +54,8 @@
 	if (label) {
 //		delete label;
-		if (label     ) xfree((void**)&label);
 		label     =NULL;
 	}
 	if (icon) {
 //		delete icon;
-		if (icon      ) xfree((void**)&icon);
 		icon      =NULL;
 	}
@@ -189,5 +185,5 @@
 							  &ncom,&pcom)) {
 		if      (!strncmp(kstri,"</Style", 7)) {
-			xfree((void**)&kstri);
+			xDelete<char>(kstri);
 			break;
 		}
@@ -230,5 +226,5 @@
 			KML_StyleSelector::Read(fid,kstri);
 
-		xfree((void**)&kstri);
+		xDelete<char>(kstri);
 	}
 
@@ -236,8 +232,8 @@
 
 	for (ncom; ncom>0; ncom--)
-		xfree((void**)&(pcom[ncom-1]));
-	xfree((void**)&pcom);
-
-	return;
-}
-/*}}}*/
+		xDelete<char>(pcom[ncom-1]);
+	xDelete<char*>(pcom);
+
+	return;
+}
+/*}}}*/
Index: /issm/trunk-jpl/src/c/classes/objects/KML/KML_Unknown.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/objects/KML/KML_Unknown.cpp	(revision 12914)
+++ /issm/trunk-jpl/src/c/classes/objects/KML/KML_Unknown.cpp	(revision 12915)
@@ -32,6 +32,6 @@
 KML_Unknown::~KML_Unknown(){
 
-	if (name      ) xfree((void**)&name);
-	if (value     ) xfree((void**)&value);
+	if (name      ) xDelete<char>(name);
+	if (value     ) xDelete<char>(value);
 
 }
@@ -77,5 +77,5 @@
 
 	if (value     ) {
-		valuei=(char *) xmalloc((strlen(value)+1)*sizeof(char));
+		valuei=xNew<char>(strlen(value)+1);
 		memcpy(valuei,value,(strlen(value)+1)*sizeof(char)); 
         
@@ -87,5 +87,5 @@
 		if(flag) _pprintLine_("\"");
 
-		xfree((void**)&valuei);
+		xDelete<char>(valuei);
 	}
     else
@@ -108,5 +108,5 @@
 
 	if (value     ) {
-		valuei=(char *) xmalloc((strlen(value)+1)*sizeof(char));
+		valuei=xNew<char>(strlen(value)+1);
 		memcpy(valuei,value,(strlen(value)+1)*sizeof(char)); 
         
@@ -117,5 +117,5 @@
 			fprintf(filout,"%s  %s\n",indent,vtoken);
 
-		xfree((void**)&valuei);
+		xDelete<char>(valuei);
 	}
 
@@ -131,4 +131,5 @@
 
 	char*        kstri;
+	char*        value2=NULL;
 	int          ncom=0;
 	char**       pcom=NULL;
@@ -155,5 +156,5 @@
 				 !strncmp(&kstri[2],name,strlen(name))) {
 //			_pprintLine_("KML_Unknown::Read -- closing name=" << name << ".");
-			xfree((void**)&kstri);
+			xDelete<char>(kstri);
 			break;
 		}
@@ -163,10 +164,15 @@
 		else if (strncmp(kstri,"<",1)) {
 			if (value) {
-				value=(char *) xrealloc(value,(strlen(value)+1+strlen(kstri)+1)*sizeof(char));
+				value2=xNew<char>(strlen(value)+1+strlen(kstri)+1);
+				memcpy(value2,value,(strlen(value)+1)*sizeof(char));
+				xDelete<char>(value);
+				value=value2;
+				value2=NULL;
+//				value=(char *) xrealloc(value,(strlen(value)+1+strlen(kstri)+1)*sizeof(char));
 				strcat(value,nl);
 				strcat(value,kstri);
 			}
 			else {
-				value=(char *) xmalloc((strlen(kstri)+1)*sizeof(char));
+				value=xNew<char>(strlen(kstri)+1);
 				memcpy(value,kstri,(strlen(kstri)+1)*sizeof(char));
 			}
@@ -176,5 +182,5 @@
 			KML_Object::Read(fid,kstri);
 
-		xfree((void**)&kstri);
+		xDelete<char>(kstri);
 	}
 
@@ -182,6 +188,6 @@
 
 	for (ncom; ncom>0; ncom--)
-		xfree((void**)&(pcom[ncom-1]));
-	xfree((void**)&pcom);
+		xDelete<char>(pcom[ncom-1]);
+	xDelete<char*>(pcom);
 
 	return;
