#2307, ST_MakeValid outputs invalid geometries

git-svn-id: http://svn.osgeo.org/postgis/trunk@11525 b70326c6-7e19-0410-871a-916f4a2858ee
This commit is contained in:
Paul Ramsey 2013-06-05 18:11:58 +00:00
parent 5fcd1c4e28
commit 88eec79212
2 changed files with 8 additions and 5 deletions

1
NEWS
View file

@ -200,6 +200,7 @@ PostGIS 2.1.0
- #2257, GBOX variables not initialized when testing with empty geometries
- #2271, Prevent parallel make of raster
- #2282, Fix call to undefined function nd_stats_to_grid() in debug mode
- #2307, ST_MakeValid outputs invalid geometries
- #2309, Remove confusing INFO message when trying to get SRS info
- #2348, Provide raster upgrade path for 2.0 to 2.1

View file

@ -317,6 +317,7 @@ lwcollection_make_geos_friendly(LWCOLLECTION *g)
ret = lwalloc(sizeof(LWCOLLECTION));
memcpy(ret, g, sizeof(LWCOLLECTION));
ret->maxgeoms = g->ngeoms;
for (i=0; i<g->ngeoms; i++)
{
@ -324,7 +325,7 @@ lwcollection_make_geos_friendly(LWCOLLECTION *g)
if ( newg ) new_geoms[new_ngeoms++] = newg;
}
ret->bbox = 0; /* recompute later... */
ret->bbox = NULL; /* recompute later... */
ret->ngeoms = new_ngeoms;
if ( new_ngeoms )
@ -334,7 +335,8 @@ lwcollection_make_geos_friendly(LWCOLLECTION *g)
else
{
free(new_geoms);
ret->geoms = 0;
ret->geoms = NULL;
ret->maxgeoms = 0;
}
return (LWGEOM*)ret;
@ -1045,16 +1047,16 @@ lwgeom_make_valid(LWGEOM* lwgeom_in)
}
lwgeom_out = GEOS2LWGEOM(geosout, is3d);
GEOSGeom_destroy(geosout);
if ( lwgeom_is_collection(lwgeom_in) && ! lwgeom_is_collection(lwgeom_out) )
{
LWDEBUG(3, "lwgeom_make_valid: forcing multi");
lwgeom_tmp = lwgeom_as_multi(lwgeom_out);
lwgeom_free(lwgeom_out);
// lwgeom_free(lwgeom_out);
lwgeom_out = lwgeom_tmp;
}
GEOSGeom_destroy(geosout);
lwgeom_out->srid = lwgeom_in->srid;
return lwgeom_out;
}