From b3c1fef0ed18605e7a74e216e6fc58bf2b3f4316 Mon Sep 17 00:00:00 2001 From: jfa Date: Fri, 13 Jan 2006 15:31:06 +0000 Subject: [PATCH] PAL11238: Crash in ExportMED. --- src/SMESH_I/SMESH_Mesh_i.cxx | 31 +++++++++---------------------- 1 file changed, 9 insertions(+), 22 deletions(-) diff --git a/src/SMESH_I/SMESH_Mesh_i.cxx b/src/SMESH_I/SMESH_Mesh_i.cxx index 604f3dd0b..d6b5b420d 100644 --- a/src/SMESH_I/SMESH_Mesh_i.cxx +++ b/src/SMESH_I/SMESH_Mesh_i.cxx @@ -1095,29 +1095,16 @@ static void PrepareForWriting (const char* file) 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); + } else { + aFile.Close(); + aFile.Remove(); } } } -- 2.39.2