Salome HOME
PAL11238: Crash in ExportMED.
authorjfa <jfa@opencascade.com>
Fri, 13 Jan 2006 15:32:55 +0000 (15:32 +0000)
committerjfa <jfa@opencascade.com>
Fri, 13 Jan 2006 15:32:55 +0000 (15:32 +0000)
src/SMESH_I/SMESH_Mesh_i.cxx

index daf37787f3653b7dfe3b0d64ede422aff91508ec..c56c56918dd829aeb6edc0eed393b25d20ff4cd2 100644 (file)
@@ -1194,29 +1194,16 @@ static void PrepareForWriting (const char* file)
       THROW_SALOME_CORBA_EXCEPTION(msg.ToCString(), SALOME::BAD_PARAM);
     }
   } else {
       THROW_SALOME_CORBA_EXCEPTION(msg.ToCString(), SALOME::BAD_PARAM);
     }
   } else {
-    // nonexisting file
-    TCollection_AsciiString aDirName = aPath.TrekValue(aPath.TrekLength());
-    aPath.UpTrek();
-    aPath.SetName(aDirName);
-    aPath.SetExtension("");
-    OSD_Directory aDir (aPath);
-    TCollection_AsciiString aFullDirName;
-    aPath.SystemName(aFullDirName);
-    if (aDir.Exists()) {
-      aFile.Reset();
-      aFile.Build(OSD_WriteOnly, OSD_Protection());
-      if (aFile.Failed()) {
-        TCollection_AsciiString msg ("You cannot write to directory ");
-        msg += aFullDirName + ".";
-        THROW_SALOME_CORBA_EXCEPTION(msg.ToCString(), SALOME::BAD_PARAM);
-      } else {
-        aFile.Close();
-        aFile.Remove();
-      }
-    } else {
-      TCollection_AsciiString msg ("Directory ");
-      msg += aFullDirName + " does not exist.";
+    // nonexisting file; check if it can be created
+    aFile.Reset();
+    aFile.Build(OSD_WriteOnly, OSD_Protection());
+    if (aFile.Failed()) {
+      TCollection_AsciiString msg ("You cannot create the file ");
+      msg += aFullName + ". Check the directory existance and access rights.";
       THROW_SALOME_CORBA_EXCEPTION(msg.ToCString(), SALOME::BAD_PARAM);
       THROW_SALOME_CORBA_EXCEPTION(msg.ToCString(), SALOME::BAD_PARAM);
+    } else {
+      aFile.Close();
+      aFile.Remove();
     }
   }
 }
     }
   }
 }