--- C:\Users\giova\AppData\Local\Temp\convert.c-revBASE.svn003.tmp.c	lun mar 23 17:33:26 2009
+++ C:\OSGeo4W\apps\msys\local\grass6_devel\lib\proj\convert.c	lun mar 23 17:29:35 2009
@@ -70,7 +70,16 @@
 	OSRExportToWkt(hSRS, &wkt);
 
     OSRDestroySpatialReference(hSRS);
-    return wkt;
+	
+#ifdef WIN32
+	    /* copy string so we can keep using G_free() instead of CPLFree() */ 
+        char *res = G_strdup(wkt); 
+	    CPLFree(wkt); 
+	    return res; 
+#else 
+		return wkt; 
+#endif 
+
 }
 
 /**
@@ -220,9 +229,13 @@
     OSRDestroySpatialReference(hSRS);
     G_free(modwkt);
     CPLFree(wkt);
-    if (proj4 != proj4mod)
 	pj_dalloc(proj4);
+    if (proj4 == proj4mod){
+	pj_dalloc(proj4mod);
+	}
+	else{
     G_free(proj4mod);
+	}
     G_free(datum);
     G_free(params);
     G_free(datumlongname);
@@ -561,7 +574,8 @@
 	G_free_key_value(temp_projinfo);
     }
 
-    free(pszProj4);		/* hopefully the same as CPLFree()! */
+    /*free(pszProj4);		/* hopefully the same as CPLFree()! */
+	CPLFree(pszProj4); 
 
     /* -------------------------------------------------------------------- */
     /*      Set the linear units.                                           */
@@ -783,8 +797,8 @@
     /* -------------------------------------------------------------------- */
     for (i = 0; papszDatumEquiv[i] != NULL; i += 2) {
 	if (EQUAL(*ppszDatum, papszDatumEquiv[i])) {
-	    CPLFree(*ppszDatum);
-	    *ppszDatum = CPLStrdup(papszDatumEquiv[i + 1]);
+	    G_free(*pszDatum);
+	    *ppszDatum = G_strdup(papszDatumEquiv[i + 1]);
 	    break;
 	}
     }

