diff options
-rw-r--r-- | ucb/source/ucp/file/filstr.cxx | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/ucb/source/ucp/file/filstr.cxx b/ucb/source/ucp/file/filstr.cxx index 41f3fdb15e41..4613a409d0c5 100644 --- a/ucb/source/ucp/file/filstr.cxx +++ b/ucb/source/ucp/file/filstr.cxx @@ -61,8 +61,12 @@ XStream_impl::XStream_impl( shell* pMyShell,const rtl::OUString& aUncPath ) m_nErrorCode( TASKHANDLER_NO_ERROR ), m_nMinorErrorCode( TASKHANDLER_NO_ERROR ) { - osl::FileBase::RC err = m_aFile.open( OpenFlag_Read | OpenFlag_Write ); - if( err != osl::FileBase::E_None ) + osl::FileBase::RC err,d; + if(( err = d = m_aFile.open(OpenFlag_Read | OpenFlag_Write)) == osl::FileBase::E_None || + ( d == osl::FileBase::E_NOENT && + ( err = m_aFile.open(OpenFlag_Read | OpenFlag_Write | OpenFlag_Create)) == osl::FileBase::E_None )) + m_nIsOpen = true; + else { m_nIsOpen = false; m_aFile.close(); @@ -70,8 +74,6 @@ XStream_impl::XStream_impl( shell* pMyShell,const rtl::OUString& aUncPath ) m_nErrorCode = TASKHANDLING_OPEN_FOR_STREAM; m_nMinorErrorCode = err; } - else - m_nIsOpen = true; } |