summaryrefslogtreecommitdiffstats
path: root/gis/osgEarth/geos-3_8-support.patch
blob: 5993d4cb0c8565add236a3ddd2fc53feefafa88d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
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<geom::CoordinateSequence>
     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<geom::CoordinateSequence> 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<geom::CoordinateSequence> 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<geom::LinearRing * >*)holes );
                     }
                 
                     break;