@@ -5044,7 +5044,13 @@ double QgsGeometry::distance(QgsGeometry& geom)
5044
5044
QgsGeometry* QgsGeometry::buffer (double distance, int segments)
5045
5045
{
5046
5046
if (mGeos == NULL )
5047
- exportWkbToGeos ();
5047
+ {
5048
+ exportWkbToGeos ();
5049
+ }
5050
+ if (!mGeos )
5051
+ {
5052
+ return 0 ;
5053
+ }
5048
5054
GEOS_GEOM::Geometry* geos = mGeos ->buffer (distance, segments);
5049
5055
QgsGeometry* g = new QgsGeometry;
5050
5056
g->setGeos (geos);
@@ -5054,7 +5060,13 @@ QgsGeometry* QgsGeometry::buffer(double distance, int segments)
5054
5060
QgsGeometry* QgsGeometry::convexHull ()
5055
5061
{
5056
5062
if (mGeos == NULL )
5057
- exportWkbToGeos ();
5063
+ {
5064
+ exportWkbToGeos ();
5065
+ }
5066
+ if (!mGeos )
5067
+ {
5068
+ return 0 ;
5069
+ }
5058
5070
GEOS_GEOM::Geometry* geos = mGeos ->convexHull ();
5059
5071
QgsGeometry* g = new QgsGeometry;
5060
5072
g->setGeos (geos);
@@ -5064,11 +5076,21 @@ QgsGeometry* QgsGeometry::convexHull()
5064
5076
QgsGeometry* QgsGeometry::intersection (QgsGeometry* geometry)
5065
5077
{
5066
5078
if (geometry == NULL )
5067
- return NULL ;
5079
+ {
5080
+ return NULL ;
5081
+ }
5068
5082
if (mGeos == NULL )
5069
- exportWkbToGeos ();
5083
+ {
5084
+ exportWkbToGeos ();
5085
+ }
5070
5086
if (geometry->mGeos == NULL )
5071
- geometry->exportWkbToGeos ();
5087
+ {
5088
+ geometry->exportWkbToGeos ();
5089
+ }
5090
+ if (!mGeos || !geometry->mGeos )
5091
+ {
5092
+ return 0 ;
5093
+ }
5072
5094
GEOS_GEOM::Geometry* geos = mGeos ->intersection (geometry->mGeos );
5073
5095
QgsGeometry* g = new QgsGeometry;
5074
5096
g->setGeos (geos);
@@ -5078,11 +5100,21 @@ QgsGeometry* QgsGeometry::intersection(QgsGeometry* geometry)
5078
5100
QgsGeometry* QgsGeometry::Union (QgsGeometry* geometry)
5079
5101
{
5080
5102
if (geometry == NULL )
5081
- return NULL ;
5103
+ {
5104
+ return NULL ;
5105
+ }
5082
5106
if (mGeos == NULL )
5083
- exportWkbToGeos ();
5107
+ {
5108
+ exportWkbToGeos ();
5109
+ }
5084
5110
if (geometry->mGeos == NULL )
5085
- geometry->exportWkbToGeos ();
5111
+ {
5112
+ geometry->exportWkbToGeos ();
5113
+ }
5114
+ if (!mGeos || !geometry->mGeos )
5115
+ {
5116
+ return 0 ;
5117
+ }
5086
5118
GEOS_GEOM::Geometry* geos = mGeos ->Union (geometry->mGeos );
5087
5119
QgsGeometry* g = new QgsGeometry;
5088
5120
g->setGeos (geos);
@@ -5092,11 +5124,21 @@ QgsGeometry* QgsGeometry::Union(QgsGeometry* geometry)
5092
5124
QgsGeometry* QgsGeometry::difference (QgsGeometry* geometry)
5093
5125
{
5094
5126
if (geometry == NULL )
5095
- return NULL ;
5127
+ {
5128
+ return NULL ;
5129
+ }
5096
5130
if (mGeos == NULL )
5097
- exportWkbToGeos ();
5131
+ {
5132
+ exportWkbToGeos ();
5133
+ }
5098
5134
if (geometry->mGeos == NULL )
5099
- geometry->exportWkbToGeos ();
5135
+ {
5136
+ geometry->exportWkbToGeos ();
5137
+ }
5138
+ if (!mGeos || !geometry->mGeos )
5139
+ {
5140
+ return 0 ;
5141
+ }
5100
5142
GEOS_GEOM::Geometry* geos = mGeos ->difference (geometry->mGeos );
5101
5143
QgsGeometry* g = new QgsGeometry;
5102
5144
g->setGeos (geos);
@@ -5106,11 +5148,21 @@ QgsGeometry* QgsGeometry::difference(QgsGeometry* geometry)
5106
5148
QgsGeometry* QgsGeometry::symDifference (QgsGeometry* geometry)
5107
5149
{
5108
5150
if (geometry == NULL )
5109
- return NULL ;
5151
+ {
5152
+ return NULL ;
5153
+ }
5110
5154
if (mGeos == NULL )
5111
- exportWkbToGeos ();
5155
+ {
5156
+ exportWkbToGeos ();
5157
+ }
5112
5158
if (geometry->mGeos == NULL )
5113
- geometry->exportWkbToGeos ();
5159
+ {
5160
+ geometry->exportWkbToGeos ();
5161
+ }
5162
+ if (!mGeos || !geometry->mGeos )
5163
+ {
5164
+ return 0 ;
5165
+ }
5114
5166
GEOS_GEOM::Geometry* geos = mGeos ->symDifference (geometry->mGeos );
5115
5167
QgsGeometry* g = new QgsGeometry;
5116
5168
g->setGeos (geos);
0 commit comments