printf("END;\n"); /* End the last transaction */
+ Cleanup();
return 0;
}/*end main() */
void
InsertLineString()
{
- LWCOLLECTION *lwcollection;
+ LWCOLLECTION *lwcollection = NULL;
LWGEOM **lwmultilinestrings;
uchar *serialized_lwgeom;
OutputGeometry(lwg_unparser_result.wkoutput);
/* Free all of the allocated items */
- lwfree(lwg_unparser_result.wkoutput);
- lwfree(serialized_lwgeom);
+ lwfree(lwg_unparser_result.wkoutput);
+ lwfree(serialized_lwgeom);
- for (u = 0; u < obj->nParts; u++)
+ /* Free the collection or linestring as required */
+ if (simple_geometries == 0)
{
+ for (u = 0; u < obj->nParts; u++)
+ {
+ if (dpas[u]->pa->serialized_pointlist)
+ lwfree(dpas[u]->pa->serialized_pointlist);
+
+ lwfree(dpas[u]->pa);
+ lwfree(dpas[u]);
+
+ lwfree(lwmultilinestrings[u]);
+ }
+
+ lwfree(lwcollection);
+ }
+ else
+ {
+ for (u = 0; u < obj->nParts; u++)
+ {
lwline_free(lwgeom_as_lwline(lwmultilinestrings[u]));
lwfree(dpas[u]);
+ }
}
lwfree(dpas);
lwpolygons[pi] = lwpoly_as_lwgeom(lwpoly);
}
- ReleasePolygons(Outer, polygon_total);
-
/* If using MULTIPOLYGONS then generate the serialized collection, otherwise just a single POLYGON */
if (simple_geometries == 0)
{
serialized_lwgeom = lwgeom_serialize(lwpolygons[0]);
}
+ /* Note: lwpoly_free() currently doesn't free its serialized pointlist, so do it manually */
+ for(pi = 0; pi < polygon_total; pi++)
+ {
+ Ring *polyring = Outer[pi];
+ int ring_index = 0;
+ while (polyring)
+ {
+ if (pas[pi][ring_index]->serialized_pointlist)
+ lwfree(pas[pi][ring_index]->serialized_pointlist);
+
+ polyring = polyring->next;
+ ring_index++;
+ }
+ }
+
+ ReleasePolygons(Outer, polygon_total);
+
if (!hwgeom)
result = serialized_lwgeom_to_hexwkb(&lwg_unparser_result, serialized_lwgeom, PARSER_CHECK_NONE, -1);
else
OutputGeometry(lwg_unparser_result.wkoutput);
/* Free all of the allocated items */
- lwfree(lwg_unparser_result.wkoutput);
- lwfree(serialized_lwgeom);
+ lwfree(lwg_unparser_result.wkoutput);
+ lwfree(serialized_lwgeom);
/* Cycle through each polygon, freeing everything we need... */
for (u = 0; u < polygon_total; u++)
OutputGeometry(lwg_unparser_result.wkoutput);
/* Free all of the allocated items */
- lwfree(lwg_unparser_result.wkoutput);
- lwfree(serialized_lwgeom);
+ lwfree(lwg_unparser_result.wkoutput);
+ lwfree(serialized_lwgeom);
for (u = 0; u < obj->nVertices; u++)
{
- lwpoint_free(lwgeom_as_lwpoint(lwmultipoints[u]));
- lwfree(dpas[u]);
+ if (dpas[u]->pa->serialized_pointlist)
+ lwfree(dpas[u]->pa->serialized_pointlist);
+
+ lwpoint_free(lwgeom_as_lwpoint(lwmultipoints[u]));
+
+ lwfree(dpas[u]);
}
lwfree(dpas);