diff --git a/ShapeKit/ShapeKitGeometry.mm b/ShapeKit/ShapeKitGeometry.mm index 74d91d0..f5099a9 100644 --- a/ShapeKit/ShapeKitGeometry.mm +++ b/ShapeKit/ShapeKitGeometry.mm @@ -36,10 +36,16 @@ -(id)initWithWKT:(NSString *) wkt { self.geosGeom = GEOSWKTReader_read_r(handle, WKTReader, [wkt UTF8String]); GEOSWKTReader_destroy_r(handle, WKTReader); - self.geomType = [NSString stringWithUTF8String:GEOSGeomType_r(handle, geosGeom)]; - + char *typeString = GEOSGeomType_r(handle, self.geosGeom); + self.geomType = [NSString stringWithUTF8String: typeString]; + free(typeString); + GEOSWKTWriter *WKTWriter = GEOSWKTWriter_create_r(handle); - self.wktGeom = [NSString stringWithUTF8String:GEOSWKTWriter_write_r(handle, WKTWriter,geosGeom)]; + + char *wktString = GEOSWKTWriter_write_r(handle, WKTWriter, self.geosGeom); + self.wktGeom = [NSString stringWithUTF8String:wktString]; + free(wktString); + GEOSWKTWriter_destroy_r(handle, WKTWriter); return self; @@ -48,10 +54,18 @@ -(id)initWithWKT:(NSString *) wkt { -(id)initWithGeosGeometry:(GEOSGeometry *)geom { [self init]; - geosGeom = geom; - self.geomType = [NSString stringWithUTF8String:GEOSGeomType_r(handle, geosGeom)]; + self.geosGeom = geom; + + char *typeString = GEOSGeomType_r(handle, self.geosGeom); + self.geomType = [NSString stringWithUTF8String:typeString]; + free(typeString); + GEOSWKTWriter *WKTWriter = GEOSWKTWriter_create_r(handle); - self.wktGeom = [NSString stringWithUTF8String:GEOSWKTWriter_write_r(handle, WKTWriter,geosGeom)]; + + char *wktString = GEOSWKTWriter_write_r(handle, WKTWriter, self.geosGeom); + self.wktGeom = [NSString stringWithUTF8String:wktString]; + free(wktString); + GEOSWKTWriter_destroy_r(handle, WKTWriter); return self; @@ -189,7 +203,10 @@ -(id)initWithCoordinate:(CLLocationCoordinate2D)coordinate { geometry.coordinate = coordinate; GEOSWKTWriter *WKTWriter = GEOSWKTWriter_create_r(handle); - self.wktGeom = [NSString stringWithUTF8String:GEOSWKTWriter_write_r(handle, WKTWriter,geosGeom)]; + char *wktString = GEOSWKTWriter_write_r(handle, WKTWriter, self.geosGeom); + self.wktGeom = [NSString stringWithUTF8String: wktString]; + free(wktString); + GEOSWKTWriter_destroy_r(handle, WKTWriter); return self; @@ -266,7 +283,10 @@ -(id)initWithCoordinates:(CLLocationCoordinate2D[])coordinates count:(unsigned i geometry = [MKPolyline polylineWithCoordinates:coordinates count:count]; GEOSWKTWriter *WKTWriter = GEOSWKTWriter_create_r(handle); - self.wktGeom = [NSString stringWithUTF8String:GEOSWKTWriter_write_r(handle, WKTWriter,geosGeom)]; + char *wktString = GEOSWKTWriter_write_r(handle, WKTWriter, self.geosGeom); + self.wktGeom = [NSString stringWithUTF8String: wktString]; + free(wktString); + GEOSWKTWriter_destroy_r(handle, WKTWriter); return self; @@ -343,7 +363,11 @@ -(id)initWithCoordinates:(CLLocationCoordinate2D[])coordinates count:(unsigned i geometry = [MKPolygon polygonWithCoordinates:coordinates count:count]; GEOSWKTWriter *WKTWriter = GEOSWKTWriter_create_r(handle); - self.wktGeom = [NSString stringWithUTF8String:GEOSWKTWriter_write_r(handle, WKTWriter,geosGeom)]; + + char *wktString = GEOSWKTWriter_write_r(handle, WKTWriter, self.geosGeom); + self.wktGeom = [NSString stringWithUTF8String: wktString]; + free(wktString); + GEOSWKTWriter_destroy_r(handle, WKTWriter); return self; @@ -356,4 +380,4 @@ - (void) dealloc [super dealloc]; } -@end \ No newline at end of file +@end