}
else if ( newedge.face_left != node->containing_face )
{
+ _lwt_release_nodes(endpoints, num_nodes);
lwerror("SQL/MM Spatial exception - geometry crosses an edge"
" (endnodes in faces %" LWTFMT_ELEMID " and %" LWTFMT_ELEMID ")",
newedge.face_left, node->containing_face);
{
if ( ! start_node_geom )
{
+ if ( num_nodes ) _lwt_release_nodes(endpoints, num_nodes);
lwerror("SQL/MM Spatial exception - non-existent node");
return -1;
}
getPoint2d_p(pa, 0, &pn);
if ( ! p2d_same(&pn, &p1) )
{
+ if ( num_nodes ) _lwt_release_nodes(endpoints, num_nodes);
lwerror("SQL/MM Spatial exception"
" - start node not geometry start point."
//" - start node not geometry start point (%g,%g != %g,%g).", pn.x, pn.y, p1.x, p1.y
if ( ! end_node_geom )
{
+ if ( num_nodes ) _lwt_release_nodes(endpoints, num_nodes);
lwerror("SQL/MM Spatial exception - non-existent node");
return -1;
}
getPoint2d_p(pa, 0, &pn);
if ( ! p2d_same(&pn, &p2) )
{
+ if ( num_nodes ) _lwt_release_nodes(endpoints, num_nodes);
lwerror("SQL/MM Spatial exception"
" - end node not geometry end point."
//" - end node not geometry end point (%g,%g != %g,%g).", pn.x, pn.y, p2.x, p2.y
}
}
+ if ( num_nodes ) _lwt_release_nodes(endpoints, num_nodes);
+
if ( _lwt_CheckEdgeCrossing( topo, start_node, end_node, geom, 0 ) )
return -1;