Salome HOME
Issue !16751: [CEA16749] import MED 3.0 files in SMESH: exception
authorvsr <vsr@opencascade.com>
Thu, 28 Mar 2019 11:54:46 +0000 (14:54 +0300)
committervsr <vsr@opencascade.com>
Thu, 28 Mar 2019 11:54:46 +0000 (14:54 +0300)
src/MEDWrapper/MED_Factory.cxx
src/MEDWrapper/MED_Wrapper.cxx
src/MEDWrapper/MED_Wrapper.hxx

index 12c0f597a768ef08bee659864d3903eceed2a1cb..c6d62d253e4b7352de16efddc2031f3405429e90 100644 (file)
@@ -211,7 +211,7 @@ namespace MED
     if (!CheckCompatibility(fileName)) {
       EXCEPTION(std::runtime_error, "Cannot open file '"<<fileName<<"'.");
     }
-    return new MED::TWrapper(fileName);
+    return new MED::TWrapper(fileName, false);
   }
 
   PWrapper CrWrapperW(const std::string& fileName, int theVersion)
@@ -251,6 +251,6 @@ namespace MED
           CreateEmptyMEDFile(fileName, theVersion);
       }
     }
-    return new MED::TWrapper(fileName, minor);
+    return new MED::TWrapper(fileName, true, minor);
   }
 }
index 117ab89f6da8532fff99c42bb6aa5e74e437abf7..157f9834285bc7cb20ace11d84957ed797257e68 100644 (file)
@@ -187,23 +187,20 @@ namespace MED
 
   //---------------------------------------------------------------
   TWrapper
-  ::TWrapper(const std::string& theFileName, TInt theMinor):
+  ::TWrapper(const std::string& theFileName, bool write, TInt theMinor):
     myFile(new TFile(theFileName, theMinor)),
     myMinor(theMinor)
   {
     TErr aRet;
-    myFile->Open(eLECTURE_ECRITURE, &aRet);
-    // if (aRet < 0)
-    //   myFile->Close();
-    //   myFile->Open(eLECTURE_AJOUT, &aRet);
-    // }
-    if (aRet < 0) {
-      myFile->Close();
-      myFile->Open(eLECTURE, &aRet);
+    if ( write ) {
+      myFile->Open(eLECTURE_ECRITURE, &aRet);
+      if (aRet < 0) {
+       myFile->Close();
+       myFile->Open(eCREATION, &aRet);
+      }
     }
-    if (aRet < 0) {
-      myFile->Close();
-      myFile->Open(eCREATION, &aRet);
+    else {
+      myFile->Open(eLECTURE, &aRet);
     }
   }
 
index 7acbf4ce004f9d9249e5e29e216fae6f8c348fae..e236f206cb09240db23736801c9ac29597498db0 100644 (file)
@@ -52,7 +52,7 @@ namespace MED
     TWrapper& operator=(const TWrapper&);
 
   public:
-    TWrapper(const std::string& theFileName, TInt theVersion=-1);
+    TWrapper(const std::string& theFileName, bool write, TInt theVersion=-1);
 
     virtual
     ~TWrapper();