mirror of
https://git.osgeo.org/gitea/postgis/postgis
synced 2024-10-23 16:42:35 +00:00
#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:
parent
5fcd1c4e28
commit
88eec79212
1
NEWS
1
NEWS
|
@ -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
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue