}
split_col = lwgeom_as_lwcollection(split);
if ( ! split_col ) {
- lwgeom_release(split);
+ lwgeom_free(split);
lwerror("lwgeom_as_lwcollection returned NULL");
return NULL;
}
if (split_col->ngeoms < 2) {
- lwgeom_release(split);
+ lwgeom_free(split);
lwerror("SQL/MM Spatial exception - point not on edge");
return NULL;
}
node.geom = pt;
if ( ! lwt_be_insertNodes(topo, &node, 1) )
{
+ lwcollection_free(split_col);
lwerror("Backend error: %s", lwt_be_lastErrorMessage(topo->be_iface));
return -1;
}
if (node.node_id == -1) {
/* should have been set by backend */
+ lwcollection_free(split_col);
lwerror("Backend coding error: "
"insertNodes callback did not return node_id");
return -1;
/* Insert the new edge */
newedge1.edge_id = lwt_be_getNextEdgeId(topo);
if ( newedge1.edge_id == -1 ) {
- lwcollection_release(split_col);
+ lwcollection_free(split_col);
lwerror("Backend error: %s", lwt_be_lastErrorMessage(topo->be_iface));
return -1;
}
newedge1.geom = lwgeom_as_lwline(newedge_geom);
/* lwgeom_split of a line should only return lines ... */
if ( ! newedge1.geom ) {
- lwcollection_release(split_col);
+ lwcollection_free(split_col);
lwerror("first geometry in lwgeom_split output is not a line");
return -1;
}
ret = lwt_be_insertEdges(topo, &newedge1, 1);
if ( ret == -1 ) {
+ lwcollection_free(split_col);
lwerror("Backend error: %s", lwt_be_lastErrorMessage(topo->be_iface));
return -1;
} else if ( ret == 0 ) {
- lwcollection_release(split_col);
+ lwcollection_free(split_col);
lwerror("Insertion of split edge failed (no reason)");
return -1;
}
updedge.geom = lwgeom_as_lwline(oldedge_geom);
/* lwgeom_split of a line should only return lines ... */
if ( ! updedge.geom ) {
- lwcollection_release(split_col);
+ lwcollection_free(split_col);
lwerror("second geometry in lwgeom_split output is not a line");
return -1;
}
&updedge, LWT_COL_EDGE_GEOM|LWT_COL_EDGE_NEXT_LEFT|LWT_COL_EDGE_END_NODE,
NULL, 0);
if ( ret == -1 ) {
+ lwcollection_free(split_col);
lwerror("Backend error: %s", lwt_be_lastErrorMessage(topo->be_iface));
return -1;
} else if ( ret == 0 ) {
+ lwcollection_free(split_col);
lwerror("Edge being splitted (%d) disappeared during operations?", oldedge->edge_id);
return -1;
} else if ( ret > 1 ) {
+ lwcollection_free(split_col);
lwerror("More than a single edge found with id %d !", oldedge->edge_id);
return -1;
}
&updedge, LWT_COL_EDGE_NEXT_RIGHT,
&excedge, LWT_COL_EDGE_EDGE_ID);
if ( ret == -1 ) {
+ lwcollection_free(split_col);
lwerror("Backend error: %s", lwt_be_lastErrorMessage(topo->be_iface));
return -1;
}
&updedge, LWT_COL_EDGE_NEXT_LEFT,
&excedge, LWT_COL_EDGE_EDGE_ID);
if ( ret == -1 ) {
- lwcollection_release(split_col);
+ lwcollection_free(split_col);
lwerror("Backend error: %s", lwt_be_lastErrorMessage(topo->be_iface));
return -1;
}
/* Update TopoGeometries composition */
ret = lwt_be_updateTopoGeomEdgeSplit(topo, oldedge->edge_id, newedge1.edge_id, -1);
if ( ! ret ) {
- lwcollection_release(split_col);
+ lwcollection_free(split_col);
lwerror("Backend error: %s", lwt_be_lastErrorMessage(topo->be_iface));
return -1;
}
- lwcollection_release(split_col);
+ lwcollection_free(split_col);
/* return new node id */
return node.node_id;