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;
 }