diff --git a/Geo/GModelIO_OCC.cpp b/Geo/GModelIO_OCC.cpp
index e73d44d4eaab52c66827c8eaa9ce03c7a255cdb3..083cc34661afc3fad806b68fc4350cf442fa876b 100644
--- a/Geo/GModelIO_OCC.cpp
+++ b/Geo/GModelIO_OCC.cpp
@@ -1053,26 +1053,27 @@ int GModel::readOCCIGES(const std::string &fn)
 
 int GModel::writeOCCBREP(const std::string &fn)
 {
-  _occ_internals->buildShapeFromGModel(this);
-
   if(!_occ_internals){
     Msg::Error("No OpenCASCADE model found");
     return 0;
   }
-  else
+  else{
+    _occ_internals->buildShapeFromGModel(this);
     _occ_internals->writeBREP(fn.c_str());
+  }
   return 1;
 }
 
 int GModel::writeOCCSTEP(const std::string &fn)
 {
-  _occ_internals->buildShapeFromGModel(this);
   if(!_occ_internals){
     Msg::Error("No OpenCASCADE model found");
     return 0;
   }
-  else
+  else{
+    _occ_internals->buildShapeFromGModel(this);
     _occ_internals->writeSTEP(fn.c_str());
+  }
   return 1;
 }