diff --git a/Code/UtilitiesAdapters/OGRAdapters/otbOGRLayerWrapper.cxx b/Code/UtilitiesAdapters/OGRAdapters/otbOGRLayerWrapper.cxx index a65dead39700c521f5671caa836e7c4cdf6d6d86..a14fb04645d06eff264902e68f18fb402854e099 100644 --- a/Code/UtilitiesAdapters/OGRAdapters/otbOGRLayerWrapper.cxx +++ b/Code/UtilitiesAdapters/OGRAdapters/otbOGRLayerWrapper.cxx @@ -233,18 +233,29 @@ std::string otb::ogr::Layer::GetProjectionRef() const { char * wkt; - const OGRErr res = m_Layer->GetSpatialRef()->exportToWkt(&wkt); + assert(m_Layer && "OGRLayer not initialized"); + + OGRSpatialReference * srs = m_Layer->GetSpatialRef(); - if(res != OGRERR_NONE) + if(srs) { - itkGenericExceptionMacro(<< "Cannot convert spatial reference to wkt string for layer <" - <<m_Layer->GetName()<<">: " << CPLGetLastErrorMsg()); + const OGRErr res = srs->exportToWkt(&wkt); + + if(res != OGRERR_NONE) + { + itkGenericExceptionMacro(<< "Cannot convert spatial reference to wkt string for layer <" + <<m_Layer->GetName()<<">: " << CPLGetLastErrorMsg()); + } } std::string stringWkt(wkt); - // According to documentation, argument of exportToWkt() should be freed - OGRFree(wkt); + // According to documentation, argument of exportToWkt() should be + // freed + if(srs) + { + CPLFree(wkt); + } return stringWkt; }