diff --git a/src/Resource/Resource_Manager.cxx b/src/Resource/Resource_Manager.cxx index 8186eb9178..73a5d580a6 100644 --- a/src/Resource/Resource_Manager.cxx +++ b/src/Resource/Resource_Manager.cxx @@ -113,9 +113,9 @@ void Resource_Manager::Load(TCollection_AsciiString& aPath, { Resource_KindOfLine aKind; TCollection_AsciiString Token1, Token2; - TCollection_AsciiString Directory, Name; - TCollection_AsciiString FileName; - OSD_File File = OSD_Path(aPath); + OSD_Path Path(aPath); + OSD_File File = Path; + TCollection_AsciiString FileName = Path.Name(); File.Open(OSD_ReadOnly,OSD_Protection()); if (File.Failed()) { if (myVerbose) @@ -486,7 +486,12 @@ void Resource_Manager::GetResourcePath (TCollection_AsciiString& aPath, const St TCollection_AsciiString aResPath(dir); OSD_Path anOSDPath(aResPath); - anOSDPath.DownTrek(anOSDPath.Name()); + + if (!anOSDPath.Name().IsEmpty()) + { + anOSDPath.DownTrek(anOSDPath.Name()); + } + anOSDPath.SetName(aName); anOSDPath.SystemName(aPath); diff --git a/tests/bugs/caf/bug27433 b/tests/bugs/caf/bug27433 new file mode 100755 index 0000000000..72c21eb0ed --- /dev/null +++ b/tests/bugs/caf/bug27433 @@ -0,0 +1,21 @@ +puts "===========" +puts "OCC27433 Opening/Saving OCAF Documents With Own Document Format Does Not Work" +puts "===========" + +# make variable ends with "/" to get empty myName in OSD_Path +dsetenv "CSF_PluginDefaults" [dgetenv CSF_PluginDefaults]/ + +# Create simple document with some data +NewDocument Doc BinOcaf +SetInteger Doc 0:2 100 + +# Save the document +set aFile ${imagedir}/OCC27433-[file tail [info script]].cbf +file delete ${aFile} +puts ${aFile} +catch {SaveAs Doc ${aFile}} +if { ![file exists ${aFile}] } { + puts "Error: Can not save the file with path to plugins ended with slash" +} + +Close Doc