[postgis-commits] svn - r3487 - trunk/liblwgeom
postgis-commits at postgis.refractions.net
postgis-commits at postgis.refractions.net
Sun Jan 4 11:24:23 PST 2009
Author: mcayland
Date: 2009-01-04 11:24:22 -0800 (Sun, 04 Jan 2009)
New Revision: 3487
Modified:
trunk/liblwgeom/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: trunk/liblwgeom/measures.c
===================================================================
--- trunk/liblwgeom/measures.c 2009-01-02 13:25:31 UTC (rev 3486)
+++ trunk/liblwgeom/measures.c 2009-01-04 19:24:22 UTC (rev 3487)
@@ -666,7 +666,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 */
@@ -703,6 +703,10 @@
lwpoly_deserialize(g2)
);
}
+ else
+ {
+ lwerror("Unsupported geometry type: %s", lwgeom_typename(t2));
+ }
}
else if ( t1 == LINETYPE )
{
@@ -727,6 +731,10 @@
lwpoly_deserialize(g2)
);
}
+ else
+ {
+ lwerror("Unsupported geometry type: %s", lwgeom_typename(t2));
+ }
}
else if ( t1 == POLYGONTYPE )
{
@@ -751,11 +759,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