@@ -52,6 +52,10 @@ QgsCoordinateTransform::QgsCoordinateTransform()
5252QgsCoordinateTransform::QgsCoordinateTransform ( const QgsCoordinateReferenceSystem &source, const QgsCoordinateReferenceSystem &destination )
5353{
5454 d = new QgsCoordinateTransformPrivate ( source, destination, QgsCoordinateTransformContext () );
55+
56+ if ( !d->mSourceCRS .isValid () || !d->mDestCRS .isValid () )
57+ return ;
58+
5559 if ( !setFromCache ( d->mSourceCRS , d->mDestCRS , d->mSourceDatumTransform , d->mDestinationDatumTransform ) )
5660 {
5761 d->initialize ();
@@ -65,6 +69,10 @@ QgsCoordinateTransform::QgsCoordinateTransform( const QgsCoordinateReferenceSyst
6569#ifdef QGISDEBUG
6670 d->mHasContext = true ;
6771#endif
72+
73+ if ( !d->mSourceCRS .isValid () || !d->mDestCRS .isValid () )
74+ return ;
75+
6876 if ( !setFromCache ( d->mSourceCRS , d->mDestCRS , d->mSourceDatumTransform , d->mDestinationDatumTransform ) )
6977 {
7078 d->initialize ();
@@ -78,6 +86,10 @@ QgsCoordinateTransform::QgsCoordinateTransform( const QgsCoordinateReferenceSyst
7886#ifdef QGISDEBUG
7987 d->mHasContext = true ;
8088#endif
89+
90+ if ( !d->mSourceCRS .isValid () || !d->mDestCRS .isValid () )
91+ return ;
92+
8193 if ( !setFromCache ( d->mSourceCRS , d->mDestCRS , d->mSourceDatumTransform , d->mDestinationDatumTransform ) )
8294 {
8395 d->initialize ();
@@ -91,6 +103,10 @@ QgsCoordinateTransform::QgsCoordinateTransform( const QgsCoordinateReferenceSyst
91103#ifdef QGISDEBUG
92104 d->mHasContext = true ; // not strictly true, but we don't need to worry if datums have been explicitly set
93105#endif
106+
107+ if ( !d->mSourceCRS .isValid () || !d->mDestCRS .isValid () )
108+ return ;
109+
94110 if ( !setFromCache ( d->mSourceCRS , d->mDestCRS , d->mSourceDatumTransform , d->mDestinationDatumTransform ) )
95111 {
96112 d->initialize ();
@@ -115,6 +131,9 @@ void QgsCoordinateTransform::setSourceCrs( const QgsCoordinateReferenceSystem &c
115131{
116132 d.detach ();
117133 d->mSourceCRS = crs;
134+ if ( !d->mSourceCRS .isValid () || !d->mDestCRS .isValid () )
135+ return ;
136+
118137 d->calculateTransforms ();
119138 if ( !setFromCache ( d->mSourceCRS , d->mDestCRS , d->mSourceDatumTransform , d->mDestinationDatumTransform ) )
120139 {
@@ -126,6 +145,9 @@ void QgsCoordinateTransform::setDestinationCrs( const QgsCoordinateReferenceSyst
126145{
127146 d.detach ();
128147 d->mDestCRS = crs;
148+ if ( !d->mSourceCRS .isValid () || !d->mDestCRS .isValid () )
149+ return ;
150+
129151 d->calculateTransforms ();
130152 if ( !setFromCache ( d->mSourceCRS , d->mDestCRS , d->mSourceDatumTransform , d->mDestinationDatumTransform ) )
131153 {
@@ -141,6 +163,9 @@ void QgsCoordinateTransform::setContext( const QgsCoordinateTransformContext &co
141163#ifdef QGISDEBUG
142164 d->mHasContext = true ;
143165#endif
166+ if ( !d->mSourceCRS .isValid () || !d->mDestCRS .isValid () )
167+ return ;
168+
144169 d->calculateTransforms ();
145170 if ( !setFromCache ( d->mSourceCRS , d->mDestCRS , d->mSourceDatumTransform , d->mDestinationDatumTransform ) )
146171 {
0 commit comments