Fix printf formats to be safe on 32bit systems

Closes #5728
This commit is contained in:
Sandro Santilli 2024-05-17 22:00:46 +02:00
parent e3658f6ff9
commit de88a07ca7
15 changed files with 109 additions and 75 deletions

View file

@ -1132,7 +1132,7 @@ GSERIALIZED* gserialized1_from_lwgeom(LWGEOM *geom, size_t *size)
if ( expected_size != return_size ) /* Uh oh! */ if ( expected_size != return_size ) /* Uh oh! */
{ {
lwerror("Return size (%d) not equal to expected size (%d)!", return_size, expected_size); lwerror("Return size (%zu) not equal to expected size (%zu)!", return_size, expected_size);
return NULL; return NULL;
} }

View file

@ -447,9 +447,9 @@ void printPA(POINTARRAY *pa)
else mflag = ""; else mflag = "";
lwnotice(" POINTARRAY%s{", mflag); lwnotice(" POINTARRAY%s{", mflag);
lwnotice(" ndims=%i, ptsize=%i", lwnotice(" ndims=%i, ptsize=%zu",
FLAGS_NDIMS(pa->flags), ptarray_point_size(pa)); FLAGS_NDIMS(pa->flags), ptarray_point_size(pa));
lwnotice(" npoints = %i", pa->npoints); lwnotice(" npoints = %u", pa->npoints);
if (!pa) if (!pa)
{ {

View file

@ -1353,7 +1353,7 @@ lwgeom_offsetcurve(const LWGEOM* geom, double size, int quadsegs, int joinStyle,
if (lwgeom_dimension(geom) != 1) if (lwgeom_dimension(geom) != 1)
{ {
lwerror("%s: input is not linear", __func__, lwtype_name(geom->type)); lwerror("%s: input is not linear (type %s)", __func__, lwtype_name(geom->type));
return NULL; return NULL;
} }

View file

@ -297,7 +297,7 @@ ptarray_transform(POINTARRAY *pa, LWPROJ *pj)
if (n_converted != n_points) if (n_converted != n_points)
{ {
lwerror("ptarray_transform: converted (%d) != input (%d)", n_converted, n_points); lwerror("ptarray_transform: converted (%zu) != input (%zu)", n_converted, n_points);
return LW_FAILURE; return LW_FAILURE;
} }

View file

@ -264,7 +264,7 @@ lwgeom_homogenize(const LWGEOM *geom)
} }
/* Unknown type */ /* Unknown type */
lwerror("lwgeom_homogenize: Geometry Type not supported (%i)", lwerror("lwgeom_homogenize: Geometry Type not supported (%s)",
lwtype_name(geom->type)); lwtype_name(geom->type));
return NULL; /* Never get here! */ return NULL; /* Never get here! */

View file

@ -425,7 +425,7 @@ lwgeom_from_geojson(const char *geojson, char **srs)
snprintf(err, 256, "%s (at offset %d)", json_tokener_error_desc(jstok->err), jstok->char_offset); snprintf(err, 256, "%s (at offset %d)", json_tokener_error_desc(jstok->err), jstok->char_offset);
json_tokener_free(jstok); json_tokener_free(jstok);
json_object_put(poObj); json_object_put(poObj);
lwerror(err); lwerror("%s", err);
return NULL; return NULL;
} }
json_tokener_free(jstok); json_tokener_free(jstok);

View file

@ -96,7 +96,7 @@ uint8_t* bytes_from_hexbytes(const char *hexbuf, size_t hexsize)
uint32_t i; uint32_t i;
if( hexsize % 2 ) if( hexsize % 2 )
lwerror("Invalid hex string, length (%d) has to be a multiple of two!", hexsize); lwerror("Invalid hex string, length (%zu) has to be a multiple of two!", hexsize);
buf = lwalloc(hexsize/2); buf = lwalloc(hexsize/2);

View file

@ -943,7 +943,7 @@ LWGEOM *lwgeom_from_wkt(const char *wkt, const char check)
if( LW_FAILURE == lwgeom_parse_wkt(&r, (char*)wkt, check) ) if( LW_FAILURE == lwgeom_parse_wkt(&r, (char*)wkt, check) )
{ {
lwerror(r.message); lwerror("%s", r.message);
return NULL; return NULL;
} }

View file

@ -135,7 +135,7 @@ static double angle_increment_using_segments_per_quad(double tol)
// error out if tol != perQuad ? (not-round) // error out if tol != perQuad ? (not-round)
if ( perQuad != tol ) if ( perQuad != tol )
{ {
lwerror("lwarc_linearize: segments per quadrant must be an integer value, got %.15g", tol, perQuad); lwerror("lwarc_linearize: segments per quadrant must be an integer value, got %.15g", tol);
return -1; return -1;
} }
if ( perQuad < 1 ) if ( perQuad < 1 )

View file

@ -530,7 +530,7 @@ ptarray_addPoint(const POINTARRAY *pa, uint8_t *p, size_t pdims, uint32_t where)
if ( pdims < 2 || pdims > 4 ) if ( pdims < 2 || pdims > 4 )
{ {
lwerror("ptarray_addPoint: point dimension out of range (%d)", lwerror("ptarray_addPoint: point dimension out of range (%zu)",
pdims); pdims);
return NULL; return NULL;
} }

View file

@ -36,6 +36,8 @@
#include "lwt_edgeend_star.h" #include "lwt_edgeend_star.h"
#include "lwgeom_geos.h" #include "lwgeom_geos.h"
#include <inttypes.h>
/********************************************************************* /*********************************************************************
* *
* Backend iface * Backend iface
@ -672,7 +674,7 @@ _lwt_CheckEdgeCrossing( LWT_TOPOLOGY* topo,
if ( ! edge->geom ) { if ( ! edge->geom ) {
_lwt_release_edges(edges, num_edges); _lwt_release_edges(edges, num_edges);
lwerror("Edge %d has NULL geometry!", edge_id); lwerror("Edge %" LWTFMT_ELEMID " has NULL geometry!", edge_id);
return -1; return -1;
} }
@ -782,8 +784,7 @@ _lwt_CheckEdgeCrossing( LWT_TOPOLOGY* topo,
if ( match == 2 ) { if ( match == 2 ) {
lwerror("GEOSRelatePatternMatch error: %s", lwgeom_geos_errmsg); lwerror("GEOSRelatePatternMatch error: %s", lwgeom_geos_errmsg);
} else { } else {
lwerror("Spatial exception - boundary of edge % touches interior of geometry" lwerror("Spatial exception - boundary of edge %" LWTFMT_ELEMID" touches interior of geometry", edge_id);
LWTFMT_ELEMID, edge_id);
} }
return -1; return -1;
} }
@ -997,7 +998,7 @@ _lwt_EdgeSplit( LWT_TOPOLOGY* topo, LWT_ELEMID edge, LWPOINT* pt, int skipISOChe
else else
{ {
lwerror("Backend coding error: getEdgeById callback returned NULL " lwerror("Backend coding error: getEdgeById callback returned NULL "
"but numelements output parameter has value %d " "but numelements output parameter has value %" PRIu64
"(expected 0 or 1)", i); "(expected 0 or 1)", i);
return NULL; return NULL;
} }
@ -1154,12 +1155,12 @@ lwt_ModEdgeSplit( LWT_TOPOLOGY* topo, LWT_ELEMID edge,
} else if ( ret == 0 ) { } else if ( ret == 0 ) {
_lwt_release_edges(oldedge, 1); _lwt_release_edges(oldedge, 1);
lwcollection_free(split_col); lwcollection_free(split_col);
lwerror("Edge being split (%d) disappeared during operations?", oldedge->edge_id); lwerror("Edge being split (%" LWTFMT_ELEMID ") disappeared during operations?", oldedge->edge_id);
return -1; return -1;
} else if ( ret > 1 ) { } else if ( ret > 1 ) {
_lwt_release_edges(oldedge, 1); _lwt_release_edges(oldedge, 1);
lwcollection_free(split_col); lwcollection_free(split_col);
lwerror("More than a single edge found with id %d !", oldedge->edge_id); lwerror("More than a single edge found with id %" LWTFMT_ELEMID " !", oldedge->edge_id);
return -1; return -1;
} }
@ -1596,7 +1597,7 @@ _lwt_FindAdjacentEdges( LWT_TOPOLOGY* topo, LWT_ELEMID node, edgeend *data,
getPoint2d_p(pa, 0, &p1); getPoint2d_p(pa, 0, &p1);
if ( ! _lwt_FirstDistinctVertex2D(pa, &p1, 0, 1, &p2) ) if ( ! _lwt_FirstDistinctVertex2D(pa, &p1, 0, 1, &p2) )
{ {
lwerror("Edge %d has no distinct vertices: [%.15g %.15g,%.15g %.15g]: ", lwerror("Edge %" LWTFMT_ELEMID " has no distinct vertices: [%.15g %.15g,%.15g %.15g]: ",
edge->edge_id, p1.x, p1.y, p2.x, p2.y); edge->edge_id, p1.x, p1.y, p2.x, p2.y);
return -1; return -1;
} }
@ -1608,8 +1609,9 @@ _lwt_FindAdjacentEdges( LWT_TOPOLOGY* topo, LWT_ELEMID node, edgeend *data,
LWT_ELEMID id = edge->edge_id; LWT_ELEMID id = edge->edge_id;
_lwt_release_edges(edges, numedges); _lwt_release_edges(edges, numedges);
lwgeom_free(cleangeom); lwgeom_free(cleangeom);
lwerror("error computing azimuth of edge %d first edgeend [%.15g %.15g,%.15g %.15g]", lwerror("error computing azimuth of edge %"
id, p1.x, p1.y, p2.x, p2.y); LWTFMT_ELEMID " first edgeend [%.15g %.15g,%.15g %.15g]",
id, p1.x, p1.y, p2.x, p2.y);
return -1; return -1;
}} }}
azdif = az - data->myaz; azdif = az - data->myaz;
@ -1658,7 +1660,7 @@ _lwt_FindAdjacentEdges( LWT_TOPOLOGY* topo, LWT_ELEMID node, edgeend *data,
getPoint2d_p(pa, pa->npoints-1, &p1); getPoint2d_p(pa, pa->npoints-1, &p1);
if ( ! _lwt_FirstDistinctVertex2D(pa, &p1, pa->npoints-1, -1, &p2) ) if ( ! _lwt_FirstDistinctVertex2D(pa, &p1, pa->npoints-1, -1, &p2) )
{ {
lwerror("Edge %d has no distinct vertices: [%.15g %.15g,%.15g %.15g]: ", lwerror("Edge %" LWTFMT_ELEMID " has no distinct vertices: [%.15g %.15g,%.15g %.15g]: ",
edge->edge_id, p1.x, p1.y, p2.x, p2.y); edge->edge_id, p1.x, p1.y, p2.x, p2.y);
return -1; return -1;
} }
@ -1669,8 +1671,9 @@ _lwt_FindAdjacentEdges( LWT_TOPOLOGY* topo, LWT_ELEMID node, edgeend *data,
LWT_ELEMID id = edge->edge_id; LWT_ELEMID id = edge->edge_id;
_lwt_release_edges(edges, numedges); _lwt_release_edges(edges, numedges);
lwgeom_free(cleangeom); lwgeom_free(cleangeom);
lwerror("error computing azimuth of edge %d last edgeend [%.15g %.15g,%.15g %.15g]", lwerror("error computing azimuth of edge %"
id, p1.x, p1.y, p2.x, p2.y); LWTFMT_ELEMID " last edgeend [%.15g %.15g,%.15g %.15g]",
id, p1.x, p1.y, p2.x, p2.y);
return -1; return -1;
}} }}
azdif = az - data->myaz; azdif = az - data->myaz;
@ -1813,7 +1816,8 @@ _lwt_MakeRingShell(LWT_TOPOLOGY *topo, LWT_ELEMID *signed_edge_ids, uint64_t num
{ {
lwfree( signed_edge_ids ); lwfree( signed_edge_ids );
_lwt_release_edges(ring_edges, i); _lwt_release_edges(ring_edges, i);
lwerror("Unexpected error: %d edges found when expecting %d", i, numedges); lwerror("Unexpected error: %" LWTFMT_ELEMID
" edges found when expecting %" PRIu64, i, numedges);
return NULL; return NULL;
} }
@ -2020,7 +2024,7 @@ _lwt_AddFaceSplit( LWT_TOPOLOGY* topo,
{ {
lwfree( signed_edge_ids ); lwfree( signed_edge_ids );
lwpoly_free(shell); /* NOTE: owns shellbox */ lwpoly_free(shell); /* NOTE: owns shellbox */
lwerror("Unexpected error: %d faces found when expecting 1", nfaces); lwerror("Unexpected error: %" PRIu64 " faces found when expecting 1", nfaces);
return -2; return -2;
} }
newface.mbr = oldface->mbr; newface.mbr = oldface->mbr;
@ -2132,7 +2136,7 @@ _lwt_AddFaceSplit( LWT_TOPOLOGY* topo,
lwfree(forward_edges); /* contents owned by edges */ lwfree(forward_edges); /* contents owned by edges */
lwfree(backward_edges); /* contents owned by edges */ lwfree(backward_edges); /* contents owned by edges */
_lwt_release_edges(edges, numfaceedges); _lwt_release_edges(edges, numfaceedges);
lwerror("Edge %d is empty", e->edge_id); lwerror("Edge %" LWTFMT_ELEMID " is empty", e->edge_id);
return -2; return -2;
} }
@ -3182,7 +3186,7 @@ lwt_GetFaceEdges(LWT_TOPOLOGY* topo, LWT_ELEMID face_id, LWT_ELEMID **out )
_lwt_release_edges(edges, numfaceedges); _lwt_release_edges(edges, numfaceedges);
lwgeom_free(face); lwgeom_free(face);
lwfree(seid); lwfree(seid);
lwerror("No edge (among %d) found to be defining geometry of face %" lwerror("No edge (among %" PRIu64 ") found to be defining geometry of face %"
LWTFMT_ELEMID, numfaceedges, face_id); LWTFMT_ELEMID, numfaceedges, face_id);
return -1; return -1;
} }
@ -3288,7 +3292,7 @@ lwt_ChangeEdgeGeom(LWT_TOPOLOGY* topo, LWT_ELEMID edge_id, LWLINE *geom)
else else
{ {
lwerror("Backend coding error: getEdgeById callback returned NULL " lwerror("Backend coding error: getEdgeById callback returned NULL "
"but numelements output parameter has value %d " "but numelements output parameter has value %" PRIu64 " "
"(expected 0 or 1)", i); "(expected 0 or 1)", i);
return -1; return -1;
} }
@ -3458,7 +3462,7 @@ lwt_ChangeEdgeGeom(LWT_TOPOLOGY* topo, LWT_ELEMID edge_id, LWLINE *geom)
if (!res) if (!res)
{ {
_lwt_release_edges(oldedge, 1); _lwt_release_edges(oldedge, 1);
lwerror("Unexpected error: %d edges updated when expecting 1", i); lwerror("Unexpected error: %" PRIu64 " edges updated when expecting 1", i);
return -1; return -1;
} }
@ -3528,7 +3532,8 @@ lwt_ChangeEdgeGeom(LWT_TOPOLOGY* topo, LWT_ELEMID edge_id, LWLINE *geom)
updatedBox = lwt_be_computeFaceMBR(topo, oldedge->face_left); updatedBox = lwt_be_computeFaceMBR(topo, oldedge->face_left);
if ( ! updatedBox ) if ( ! updatedBox )
{ {
lwerror("Corrupted topology: face %d, left of edge %d, has no bbox", lwerror("Corrupted topology: face %" LWTFMT_ELEMID
", left of edge %" LWTFMT_ELEMID ", has no bbox",
oldedge->face_left, edge_id); oldedge->face_left, edge_id);
return -1; return -1;
} }
@ -3543,7 +3548,8 @@ lwt_ChangeEdgeGeom(LWT_TOPOLOGY* topo, LWT_ELEMID edge_id, LWLINE *geom)
updatedBox = lwt_be_computeFaceMBR(topo, oldedge->face_right); updatedBox = lwt_be_computeFaceMBR(topo, oldedge->face_right);
if ( ! updatedBox ) if ( ! updatedBox )
{ {
lwerror("Corrupted topology: face %d, right of edge %d, has no bbox", lwerror("Corrupted topology: face %"
LWTFMT_ELEMID ", right of edge %" LWTFMT_ELEMID ", has no bbox",
oldedge->face_right, edge_id); oldedge->face_right, edge_id);
return -1; return -1;
} }
@ -3562,7 +3568,7 @@ lwt_ChangeEdgeGeom(LWT_TOPOLOGY* topo, LWT_ELEMID edge_id, LWLINE *geom)
if (updatedFaces == UINT64_MAX) if (updatedFaces == UINT64_MAX)
PGTOPO_BE_ERROR(); PGTOPO_BE_ERROR();
else else
lwerror("Unexpected error: %d faces updated when expecting 1", updatedFaces); lwerror("Unexpected error: %" PRIu64 " faces updated when expecting 1", updatedFaces);
return -1; return -1;
} }
} }
@ -3764,7 +3770,7 @@ lwt_RemIsoEdge(LWT_TOPOLOGY* topo, LWT_ELEMID id)
} }
if ( n != 1 ) if ( n != 1 )
{ {
lwerror("Unexpected error: %d edges deleted when expecting 1", n); lwerror("Unexpected error: %" PRIu64 " edges deleted when expecting 1", n);
return -1; return -1;
} }
@ -3902,7 +3908,7 @@ _lwt_RemEdge( LWT_TOPOLOGY* topo, LWT_ELEMID edge_id, int modFace )
{ {
lwerror( lwerror(
"Backend coding error: getEdgeById callback returned NULL " "Backend coding error: getEdgeById callback returned NULL "
"but numelements output parameter has value %d " "but numelements output parameter has value %" PRIu64 " "
"(expected 0 or 1)", "(expected 0 or 1)",
i); i);
return -1; return -1;
@ -4112,7 +4118,7 @@ _lwt_RemEdge( LWT_TOPOLOGY* topo, LWT_ELEMID edge_id, int modFace )
if (result != 1) if (result != 1)
{ {
_lwt_release_edges(edge, 1); _lwt_release_edges(edge, 1);
lwerror("Unexpected error: %d faces updated when expecting 1", i); lwerror("Unexpected error: %" PRIu64 " faces updated when expecting 1", i);
return -1; return -1;
} }
} }
@ -4564,7 +4570,7 @@ _lwt_HealEdges( LWT_TOPOLOGY* topo, LWT_ELEMID eid1, LWT_ELEMID eid2,
{ {
lwline_free(newedge.geom); lwline_free(newedge.geom);
if ( edges ) _lwt_release_edges(edges, nedges); if ( edges ) _lwt_release_edges(edges, nedges);
lwerror("Unexpected error: %d edges updated when expecting 1", i); lwerror("Unexpected error: %" PRIu64 " edges updated when expecting 1", i);
return -1; return -1;
} }
} }
@ -5224,7 +5230,9 @@ _lwt_SnapEdgeToExistingNode(
n, op.x, op.y, pt->x, pt->y, splitNodeEdgeEnds[n].myaz); n, op.x, op.y, pt->x, pt->y, splitNodeEdgeEnds[n].myaz);
ret = _lwt_FindAdjacentEdges( topo, node->node_id, &(splitNodeEdgeEnds[n]), NULL, -1 ); ret = _lwt_FindAdjacentEdges( topo, node->node_id, &(splitNodeEdgeEnds[n]), NULL, -1 );
if ( ! ret ) { if ( ! ret ) {
lwerror("Unexpected backend return: _lwt_FindAdjacentEdges(%d) found no edges when we previously splitted edge %d on it", lwerror("Unexpected backend return: _lwt_FindAdjacentEdges(%"
LWTFMT_ELEMID ") found no edges when we previously splitted edge %"
LWTFMT_ELEMID "d on it",
node->node_id, edge->edge_id); node->node_id, edge->edge_id);
return -1; return -1;
} }
@ -5366,7 +5374,8 @@ _lwt_SnapEdgeToExistingNode(
lwerror("Edge %" LWTFMT_ELEMID " disappeared during operations", selEdge.edge_id); lwerror("Edge %" LWTFMT_ELEMID " disappeared during operations", selEdge.edge_id);
return -1; return -1;
} else if ( ret > 1 ) { } else if ( ret > 1 ) {
lwerror("More than a single edge found with edge_id %d ! (corrupted topology?)", selEdge.edge_id); lwerror("More than a single edge found with id %"
LWTFMT_ELEMID " ! (corrupted topology?)", selEdge.edge_id);
return -1; return -1;
} }
} }
@ -5415,7 +5424,8 @@ _lwt_SnapEdgeToExistingNode(
lwerror("Edge %" LWTFMT_ELEMID " disappeared during operations", selEdge.edge_id); lwerror("Edge %" LWTFMT_ELEMID " disappeared during operations", selEdge.edge_id);
return -1; return -1;
} else if ( ret > 1 ) { } else if ( ret > 1 ) {
lwerror("More than a single edge found with edge_id %d ! (corrupted topology?)", selEdge.edge_id); lwerror("More than a single edge found with edge_id %"
LWTFMT_ELEMID " ! (corrupted topology?)", selEdge.edge_id);
return -1; return -1;
} }
} }
@ -5553,7 +5563,8 @@ _lwt_SnapEdgeToExistingNode(
lwerror("Edge %" LWTFMT_ELEMID " disappeared during operations", selEdge.edge_id); lwerror("Edge %" LWTFMT_ELEMID " disappeared during operations", selEdge.edge_id);
return -1; return -1;
} else if ( ret > 1 ) { } else if ( ret > 1 ) {
lwerror("More than a single edge found with next_left %d ! (corrupted topology?)", selEdge.next_left); lwerror("More than a single edge found with next_left %"
LWTFMT_ELEMID " ! (corrupted topology?)", selEdge.next_left);
return -1; return -1;
} }
} }
@ -5617,10 +5628,11 @@ _lwt_SnapEdgeToExistingNode(
PGTOPO_BE_ERROR(); PGTOPO_BE_ERROR();
return -1; return -1;
} else if ( ret == 0 ) { } else if ( ret == 0 ) {
lwerror("Edge being split (%d) disappeared during operations?", selEdge.edge_id); lwerror("Edge being split (%" LWTFMT_ELEMID ") disappeared during operations?", selEdge.edge_id);
return -1; return -1;
} else if ( ret > 1 ) { } else if ( ret > 1 ) {
lwerror("More than a single edge found with id %d !", selEdge.edge_id); lwerror("More than a single edge found with id %"
LWTFMT_ELEMID " !", selEdge.edge_id);
return -1; return -1;
} }
} }
@ -5669,10 +5681,11 @@ _lwt_SnapEdgeToExistingNode(
PGTOPO_BE_ERROR(); PGTOPO_BE_ERROR();
return -1; return -1;
} else if ( ret == 0 ) { } else if ( ret == 0 ) {
lwerror("Edge being split (%d) disappeared during operations?", selEdge.edge_id); lwerror("Edge being split (%" LWTFMT_ELEMID ") disappeared during operations?", selEdge.edge_id);
return -1; return -1;
} else if ( ret > 1 ) { } else if ( ret > 1 ) {
lwerror("More than a single edge found with id %d !", selEdge.edge_id); lwerror("More than a single edge found with id %"
LWTFMT_ELEMID " !", selEdge.edge_id);
return -1; return -1;
} }
@ -5841,10 +5854,11 @@ _lwt_SnapEdgeToExistingNode(
PGTOPO_BE_ERROR(); PGTOPO_BE_ERROR();
return -1; return -1;
} else if ( ret == 0 ) { } else if ( ret == 0 ) {
lwerror("Edge being split (%d) disappeared during operations?", selEdge.edge_id); lwerror("Edge being split (%" LWTFMT_ELEMID ") disappeared during operations?", selEdge.edge_id);
return -1; return -1;
} else if ( ret > 1 ) { } else if ( ret > 1 ) {
lwerror("More than a single edge found with id %d !", selEdge.edge_id); lwerror("More than a single edge found with id %"
LWTFMT_ELEMID " !", selEdge.edge_id);
return -1; return -1;
} }
@ -5873,10 +5887,11 @@ _lwt_SnapEdgeToExistingNode(
PGTOPO_BE_ERROR(); PGTOPO_BE_ERROR();
return -1; return -1;
} else if ( ret == 0 ) { } else if ( ret == 0 ) {
lwerror("Edge being split (%d) disappeared during operations?", selEdge.edge_id); lwerror("Edge being split (%" LWTFMT_ELEMID ") disappeared during operations?", selEdge.edge_id);
return -1; return -1;
} else if ( ret > 1 ) { } else if ( ret > 1 ) {
lwerror("More than a single edge found with id %d !", selEdge.edge_id); lwerror("More than a single edge found with id %"
LWTFMT_ELEMID " !", selEdge.edge_id);
return -1; return -1;
} }
} }
@ -5906,10 +5921,11 @@ _lwt_SnapEdgeToExistingNode(
PGTOPO_BE_ERROR(); PGTOPO_BE_ERROR();
return -1; return -1;
} else if ( ret == 0 ) { } else if ( ret == 0 ) {
lwerror("Edge being split (%d) disappeared during operations?", selEdge.edge_id); lwerror("Edge being split (%" LWTFMT_ELEMID ") disappeared during operations?", selEdge.edge_id);
return -1; return -1;
} else if ( ret > 1 ) { } else if ( ret > 1 ) {
lwerror("More than a single edge found with id %d !", selEdge.edge_id); lwerror("More than a single edge found with id %"
LWTFMT_ELEMID " !", selEdge.edge_id);
return -1; return -1;
} }
} }
@ -5952,10 +5968,11 @@ _lwt_SnapEdgeToExistingNode(
PGTOPO_BE_ERROR(); PGTOPO_BE_ERROR();
return -1; return -1;
} else if ( ret == 0 ) { } else if ( ret == 0 ) {
lwerror("Edge being split (%d) disappeared during operations?", selEdge.edge_id); lwerror("Edge being split (%" LWTFMT_ELEMID ") disappeared during operations?", selEdge.edge_id);
return -1; return -1;
} else if ( ret > 1 ) { } else if ( ret > 1 ) {
lwerror("More than a single edge found with id %d !", selEdge.edge_id); lwerror("More than a single edge found with id %"
LWTFMT_ELEMID " !", selEdge.edge_id);
return -1; return -1;
} }
} }
@ -6041,8 +6058,9 @@ _lwt_SnapEdgeToExistingNode(
// Sanity check // Sanity check
if ( edge->face_right == edge->face_left ) if ( edge->face_right == edge->face_left )
{ {
lwerror("Unexpectedly, dangling edge %d was replaced by " lwerror("Unexpectedly, dangling edge %" LWTFMT_ELEMID " was replaced by "
"edges %d and %d when snap to node %d", "edges %" LWTFMT_ELEMID " and %" LWTFMT_ELEMID
" when snap to node %" LWTFMT_ELEMID,
edge->edge_id, replacedBy[0], replacedBy[1], node->node_id); edge->edge_id, replacedBy[0], replacedBy[1], node->node_id);
return -1; return -1;
} }
@ -6109,10 +6127,11 @@ _lwt_SnapEdgeToExistingNode(
PGTOPO_BE_ERROR(); PGTOPO_BE_ERROR();
return -1; return -1;
} else if ( ret == 0 ) { } else if ( ret == 0 ) {
lwerror("Edge being split (%d) disappeared during operations?", selEdge.edge_id); lwerror("Edge being split (%" LWTFMT_ELEMID ") disappeared during operations?", selEdge.edge_id);
return -1; return -1;
} else if ( ret > 1 ) { } else if ( ret > 1 ) {
lwerror("More than a single edge found with id %d !", selEdge.edge_id); lwerror("More than a single edge found with id %"
LWTFMT_ELEMID " !", selEdge.edge_id);
return -1; return -1;
} }
} }
@ -6159,10 +6178,11 @@ _lwt_SnapEdgeToExistingNode(
PGTOPO_BE_ERROR(); PGTOPO_BE_ERROR();
return -1; return -1;
} else if ( ret == 0 ) { } else if ( ret == 0 ) {
lwerror("Edge being split (%d) disappeared during operations?", selEdge.edge_id); lwerror("Edge being split (%" LWTFMT_ELEMID ") disappeared during operations?", selEdge.edge_id);
return -1; return -1;
} else if ( ret > 1 ) { } else if ( ret > 1 ) {
lwerror("More than a single edge found with id %d !", selEdge.edge_id); lwerror("More than a single edge found with id %"
LWTFMT_ELEMID " !", selEdge.edge_id);
return -1; return -1;
} }
} }
@ -6193,10 +6213,11 @@ _lwt_SnapEdgeToExistingNode(
PGTOPO_BE_ERROR(); PGTOPO_BE_ERROR();
return -1; return -1;
} else if ( ret == 0 ) { } else if ( ret == 0 ) {
lwerror("Edge being split (%d) disappeared during operations?", selEdge.edge_id); lwerror("Edge being split (%" LWTFMT_ELEMID ") disappeared during operations?", selEdge.edge_id);
return -1; return -1;
} else if ( ret > 1 ) { } else if ( ret > 1 ) {
lwerror("More than a single edge found with id %d !", selEdge.edge_id); lwerror("More than a single edge found with id %"
LWTFMT_ELEMID " !", selEdge.edge_id);
return -1; return -1;
} }
} }
@ -6226,10 +6247,11 @@ _lwt_SnapEdgeToExistingNode(
PGTOPO_BE_ERROR(); PGTOPO_BE_ERROR();
return -1; return -1;
} else if ( ret == 0 ) { } else if ( ret == 0 ) {
lwerror("Edge being split (%d) disappeared during operations?", selEdge.edge_id); lwerror("Edge being split (%" LWTFMT_ELEMID ") disappeared during operations?", selEdge.edge_id);
return -1; return -1;
} else if ( ret > 1 ) { } else if ( ret > 1 ) {
lwerror("More than a single edge found with id %d !", selEdge.edge_id); lwerror("More than a single edge found with id %"
LWTFMT_ELEMID " !", selEdge.edge_id);
return -1; return -1;
} }
} }
@ -7572,13 +7594,15 @@ lwt_GetFaceContainingPoint(LWT_TOPOLOGY* topo, const LWPOINT* pt)
} }
if (numedges < 1 ) if (numedges < 1 )
{ {
lwerror("Unexpected backend return: getEdgeByNode(%d) returns no edges when we previously found edge %d ending on that node", lwerror("Unexpected backend return: getEdgeByNode(%" LWTFMT_ELEMID
") returns no edges when we previously found edge %"
LWTFMT_ELEMID " ending on that node",
closestNode, closestEdge->edge_id); closestNode, closestEdge->edge_id);
_lwt_release_edges(edges, numedges); _lwt_release_edges(edges, numedges);
_lwt_release_edges(closestEdge, 1); _lwt_release_edges(closestEdge, 1);
return -1; return -1;
} }
LWDEBUGF(1, "lwt_be_getEdgeByNode returned %d edges", numedges); LWDEBUGF(1, "lwt_be_getEdgeByNode returned %" PRIu64 " edges", numedges);
_lwt_release_edges(edges, numedges); _lwt_release_edges(edges, numedges);
_lwt_release_edges(closestEdge, 1); _lwt_release_edges(closestEdge, 1);
return containingFace; return containingFace;
@ -7600,7 +7624,10 @@ lwt_GetFaceContainingPoint(LWT_TOPOLOGY* topo, const LWPOINT* pt)
int found = _lwt_FindAdjacentEdges( topo, closestNode, &ee, NULL, -1 ); int found = _lwt_FindAdjacentEdges( topo, closestNode, &ee, NULL, -1 );
if ( ! found ) { if ( ! found ) {
lwerror("Unexpected backend return: _lwt_FindAdjacentEdges(%d) found no edges when we previously found edge %d ending on that node", lwerror("Unexpected backend return: _lwt_FindAdjacentEdges(%"
LWTFMT_ELEMID
") found no edges when we previously found edge %"
LWTFMT_ELEMID " ending on that node",
closestNode, closestEdge->edge_id); closestNode, closestEdge->edge_id);
_lwt_release_edges(closestEdge, 1); _lwt_release_edges(closestEdge, 1);
return -1; return -1;

View file

@ -387,7 +387,7 @@ _lwt_BuildEdgeRing(__attribute__((__unused__)) LWT_TOPOLOGY *topo, LWT_ISO_EDGE_
cur = _lwt_getIsoEdgeById(edges, next); cur = _lwt_getIsoEdgeById(edges, next);
if ( ! cur ) if ( ! cur )
{ {
lwerror("Could not find edge with id %d", next); lwerror("Could not find edge with id %" LWTFMT_ELEMID, next);
break; break;
} }
} while (cur != edge || curside != side); } while (cur != edge || curside != side);

View file

@ -81,7 +81,7 @@ lwt_edgeEnd_fromEdge( const LWT_ISO_EDGE *edge, int outgoing )
); );
if (!ret) if (!ret)
{ {
lwerror("No distinct vertices found in edge %d", edge->edge_id); lwerror("No distinct vertices found in edge %" LWTFMT_ELEMID, edge->edge_id);
return NULL; return NULL;
} }

View file

@ -33,6 +33,8 @@
#include "lwt_edgeend_star.h" #include "lwt_edgeend_star.h"
#include "lwt_edgeend.h" #include "lwt_edgeend.h"
#include <inttypes.h>
LWT_EDGEEND_STAR * LWT_EDGEEND_STAR *
lwt_edgeEndStar_init( LWT_ELEMID nodeID ) lwt_edgeEndStar_init( LWT_ELEMID nodeID )
{ {
@ -71,7 +73,8 @@ lwt_edgeEndStar_addEdge( LWT_EDGEEND_STAR *star, const LWT_ISO_EDGE *edge )
{ {
LWT_EDGEEND *ee = lwt_edgeEnd_fromEdge( edge, 1 ); LWT_EDGEEND *ee = lwt_edgeEnd_fromEdge( edge, 1 );
if ( ! ee ) { if ( ! ee ) {
lwerror("Could not construct outgoing EdgeEnd for edge %d", edge->edge_id); lwerror("Could not construct outgoing EdgeEnd for edge %"
LWTFMT_ELEMID, edge->edge_id);
return; return;
} }
edgeEnds[numEdgeEnds++] = ee; edgeEnds[numEdgeEnds++] = ee;
@ -80,7 +83,8 @@ lwt_edgeEndStar_addEdge( LWT_EDGEEND_STAR *star, const LWT_ISO_EDGE *edge )
{ {
LWT_EDGEEND *ee = lwt_edgeEnd_fromEdge( edge, 0 ); LWT_EDGEEND *ee = lwt_edgeEnd_fromEdge( edge, 0 );
if ( ! ee ) { if ( ! ee ) {
lwerror("Could not construct outgoing incoming for edge %d", edge->edge_id); lwerror("Could not construct outgoing incoming for edge %"
LWTFMT_ELEMID, edge->edge_id);
return; return;
} }
edgeEnds[numEdgeEnds++] = ee; edgeEnds[numEdgeEnds++] = ee;
@ -94,7 +98,8 @@ lwt_edgeEndStar_addEdge( LWT_EDGEEND_STAR *star, const LWT_ISO_EDGE *edge )
return; return;
} }
LWDEBUGF(1, "Edge %d got %d ends incident to star node %d", LWDEBUGF(1, "Edge %" LWTFMT_ELEMID
" got %" PRIu64 " ends incident to star node %" LWTFMT_ELEMID,
edge->edge_id, numEdgeEnds, star->nodeID ); edge->edge_id, numEdgeEnds, star->nodeID );
newCapacity = star->numEdgeEnds + numEdgeEnds; newCapacity = star->numEdgeEnds + numEdgeEnds;
@ -153,12 +158,12 @@ lwt_edgeEndStar_ensureSorted( LWT_EDGEEND_STAR *star )
void void
lwt_EdgeEndStar_debugPrint( const LWT_EDGEEND_STAR *star ) lwt_EdgeEndStar_debugPrint( const LWT_EDGEEND_STAR *star )
{ {
lwdebug(1, "Star around node %d has %d edgeEnds, %s", lwdebug(1, "Star around node %" LWTFMT_ELEMID " has %" PRIu64 " edgeEnds, %s",
star->nodeID, star->numEdgeEnds, star->sorted ? "sorted" : "unsorted" ); star->nodeID, star->numEdgeEnds, star->sorted ? "sorted" : "unsorted" );
for ( uint64_t i=0; i<star->numEdgeEnds; ++i ) for ( uint64_t i=0; i<star->numEdgeEnds; ++i )
{ {
LWT_EDGEEND *ee = star->edgeEnds[i]; LWT_EDGEEND *ee = star->edgeEnds[i];
lwdebug(1, " EdgeEnd %d is %s edge %d, azimuth=%g", lwdebug(1, " EdgeEnd %" PRIu64 " is %s edge %" LWTFMT_ELEMID ", azimuth=%g",
i, ee->outgoing ? "outgoing" : "incoming", i, ee->outgoing ? "outgoing" : "incoming",
ee->edge->edge_id, ee->azimuth ee->edge->edge_id, ee->azimuth
); );
@ -181,7 +186,8 @@ lwt_edgeEndStar_getNextCW( LWT_EDGEEND_STAR *star, LWT_ISO_EDGE *edge, int outgo
} }
} }
if ( ! thisEdgeEnd ) { if ( ! thisEdgeEnd ) {
lwerror("Cound not find %s edge %d in the star", outgoing ? "outgoing" : "incoming", edge->edge_id); lwerror("Cound not find %s edge %" LWTFMT_ELEMID " in the star",
outgoing ? "outgoing" : "incoming", edge->edge_id);
return NULL; return NULL;
} }
LWT_EDGEEND *nextEdgeEnd = i < star->numEdgeEnds-1 ? star->edgeEnds[i+1] : star->edgeEnds[0]; LWT_EDGEEND *nextEdgeEnd = i < star->numEdgeEnds-1 ? star->edgeEnds[i+1] : star->edgeEnds[0];
@ -204,7 +210,8 @@ lwt_edgeEndStar_getNextCCW( LWT_EDGEEND_STAR *star, LWT_ISO_EDGE *edge, int outg
} }
} }
if ( ! thisEdgeEnd ) { if ( ! thisEdgeEnd ) {
lwerror("Cound not find %s edge %d in the star", outgoing ? "outgoing" : "incoming", edge->edge_id); lwerror("Cound not find %s edge %" LWTFMT_ELEMID " in the star",
outgoing ? "outgoing" : "incoming", edge->edge_id);
return NULL; return NULL;
} }
LWT_EDGEEND *nextEdgeEnd = i > 0 ? star->edgeEnds[i-1] : star->edgeEnds[star->numEdgeEnds-1]; LWT_EDGEEND *nextEdgeEnd = i > 0 ? star->edgeEnds[i-1] : star->edgeEnds[star->numEdgeEnds-1];

View file

@ -1,4 +1,4 @@
ERROR: lwgeom_offsetcurve: input is not linear ERROR: lwgeom_offsetcurve: input is not linear (type Point)
t0|SRID=42;LINESTRING(0 0,10 0) t0|SRID=42;LINESTRING(0 0,10 0)
t1|SRID=42;LINESTRING(0 10,10 10) t1|SRID=42;LINESTRING(0 10,10 10)
t2|SRID=42;LINESTRING(0 -10,10 -10) t2|SRID=42;LINESTRING(0 -10,10 -10)