[postgis-commits] svn - r3488 - branches/1.3/lwgeom
postgis-commits at postgis.refractions.net
postgis-commits at postgis.refractions.net
Sun Jan 4 11:31:41 PST 2009
Author: mcayland
Date: 2009-01-04 11:31:41 -0800 (Sun, 04 Jan 2009)
New Revision: 3488
Modified:
branches/1.3/lwgeom/measures.c
Log:
Commit quick fix for GBT#85: ST_Distance crashes on Circular String. Rather than devise and implement a set of distance functions for CIRCULARSTRINGs, I've simply added code to detect the condition and throw an "Unsupported geometry type" error, similar to as already exists within the codebase.
Modified: branches/1.3/lwgeom/measures.c
===================================================================
--- branches/1.3/lwgeom/measures.c 2009-01-04 19:24:22 UTC (rev 3487)
+++ branches/1.3/lwgeom/measures.c 2009-01-04 19:31:41 UTC (rev 3488)
@@ -697,7 +697,7 @@
double dist=tolerance;
/* it's a multitype... recurse */
- if ( t1 >= 4 )
+ if ( lwgeom_contains_subgeoms(t1) )
{
dist = lwgeom_mindistance2d_recursive_tolerance(g1, lw2, tolerance);
if ( dist <= tolerance ) return tolerance; /* can't be closer */
@@ -734,6 +734,10 @@
lwpoly_deserialize(g2)
);
}
+ else
+ {
+ lwerror("Unsupported geometry type: %s", lwgeom_typename(t2));
+ }
}
else if ( t1 == LINETYPE )
{
@@ -758,6 +762,10 @@
lwpoly_deserialize(g2)
);
}
+ else
+ {
+ lwerror("Unsupported geometry type: %s", lwgeom_typename(t2));
+ }
}
else if ( t1 == POLYGONTYPE )
{
@@ -782,11 +790,19 @@
lwpoly_deserialize(g1)
);
}
+ else
+ {
+ lwerror("Unsupported geometry type: %s", lwgeom_typename(t2));
+ }
}
- else /* it's a multitype... recurse */
+ else if (lwgeom_contains_subgeoms(t1)) /* it's a multitype... recurse */
{
dist = lwgeom_mindistance2d_recursive_tolerance(g1, g2, tolerance);
}
+ else
+ {
+ lwerror("Unsupported geometry type: %s", lwgeom_typename(t1));
+ }
if (mindist == -1 ) mindist = dist;
else mindist = LW_MIN(dist, mindist);
More information about the postgis-commits
mailing list