diff -Nur osgearth-osgearth-2.10.2.a/src/osgEarthSymbology/GEOS.cpp osgearth-osgearth-2.10.2.b/src/osgEarthSymbology/GEOS.cpp --- osgearth-osgearth-2.10.2.a/src/osgEarthSymbology/GEOS.cpp 2019-07-12 08:49:14.000000000 -0700 +++ osgearth-osgearth-2.10.2.b/src/osgEarthSymbology/GEOS.cpp 2019-11-16 10:00:08.966241888 -0800 @@ -49,7 +49,7 @@ namespace { - geom::CoordinateSequence* + std::unique_ptr vec3dArray2CoordSeq( const Symbology::Geometry* input, bool close, const geom::CoordinateSequenceFactory* factory ) { bool needToClose = close && input->size() > 2 && input->front() != input->back(); @@ -64,7 +64,7 @@ { coords->push_back( coords->front() ); } - geom::CoordinateSequence* seq = factory->create( coords ); + std::unique_ptr seq = factory->create( coords ); return seq; } @@ -108,7 +108,8 @@ else { // any other type will at least contain points: - geom::CoordinateSequence* seq = 0L; + std::unique_ptr seq = 0L; + try { switch( input->getType() ) @@ -119,24 +120,24 @@ case Symbology::Geometry::TYPE_POINTSET: seq = vec3dArray2CoordSeq( input, false, f->getCoordinateSequenceFactory() ); - if ( seq ) output = f->createPoint( seq ); + if ( seq ) output = f->createPoint( *seq ); break; case Symbology::Geometry::TYPE_LINESTRING: seq = vec3dArray2CoordSeq( input, false, f->getCoordinateSequenceFactory() ); - if ( seq ) output = f->createLineString( seq ); + if ( seq ) output = f->createLineString( *seq ); break; case Symbology::Geometry::TYPE_RING: seq = vec3dArray2CoordSeq( input, true, f->getCoordinateSequenceFactory() ); - if ( seq ) output = f->createLinearRing( seq ); + if ( seq ) output = f->createLinearRing( *seq ); break; case Symbology::Geometry::TYPE_POLYGON: seq = vec3dArray2CoordSeq( input, true, f->getCoordinateSequenceFactory() ); geom::LinearRing* shell = 0L; if ( seq ) - shell = f->createLinearRing( seq ); + shell = f->createLinearRing( *seq ); if ( shell ) { @@ -155,7 +156,7 @@ holes = 0L; } } - output = f->createPolygon( shell, holes ); + output = f->createPolygon( shell, (std::vector*)holes ); } break;