diff options
-rw-r--r-- | framework/source/services/autorecovery.cxx | 2 | ||||
-rw-r--r-- | unotools/source/ucbhelper/tempfile.cxx | 23 |
2 files changed, 13 insertions, 12 deletions
diff --git a/framework/source/services/autorecovery.cxx b/framework/source/services/autorecovery.cxx index bf08a705aa66..fabc5fb5d1aa 100644 --- a/framework/source/services/autorecovery.cxx +++ b/framework/source/services/autorecovery.cxx @@ -3482,7 +3482,7 @@ void AutoRecovery::implts_generateNewTempURL(const OUString& sBack OUString sName(sUniqueName.makeStringAndClear()); OUString sExtension(rInfo.Extension); OUString sPath(sBackupPath); - ::utl::TempFile aTempFile(sName, true, &sExtension, &sPath); + ::utl::TempFile aTempFile(sName, true, &sExtension, &sPath, true); rInfo.NewTempURL = aTempFile.GetURL(); } diff --git a/unotools/source/ucbhelper/tempfile.cxx b/unotools/source/ucbhelper/tempfile.cxx index f6d66bdc33b6..d6580755c9c9 100644 --- a/unotools/source/ucbhelper/tempfile.cxx +++ b/unotools/source/ucbhelper/tempfile.cxx @@ -111,7 +111,7 @@ static bool ensuredir( const OUString& rUnqPath ) return bSuccess; } -static OUString ConstructTempDir_Impl( const OUString* pParent ) +static OUString ConstructTempDir_Impl( const OUString* pParent, bool bCreateParentDirs ) { OUString aName; @@ -132,7 +132,7 @@ static OUString ConstructTempDir_Impl( const OUString* pParent ) if ( aRet[i-1] == '/' ) i--; - if ( DirectoryItem::get( aRet.copy(0, i), aItem ) == FileBase::E_None ) + if ( DirectoryItem::get( aRet.copy(0, i), aItem ) == FileBase::E_None || bCreateParentDirs ) aName = aRet; } } @@ -251,18 +251,19 @@ static OUString lcl_createName( const OUString* pParent, bool bDirectory, bool bKeep, bool bLock, bool bCreateParentDirs ) { - OUString aName = ConstructTempDir_Impl( pParent ); + OUString aName = ConstructTempDir_Impl( pParent, bCreateParentDirs ); if ( bCreateParentDirs ) { sal_Int32 nOffset = rLeadingChars.lastIndexOf("/"); + OUString aDirName; if (-1 != nOffset) - { - OUString aDirName = aName + rLeadingChars.copy( 0, nOffset ); - TempDirCreatedObserver observer; - FileBase::RC err = Directory::createPath( aDirName, &observer ); - if ( err != FileBase::E_None && err != FileBase::E_EXIST ) - return OUString(); - } + aDirName = aName + rLeadingChars.copy( 0, nOffset ); + else + aDirName = aName; + TempDirCreatedObserver observer; + FileBase::RC err = Directory::createPath( aDirName, &observer ); + if ( err != FileBase::E_None && err != FileBase::E_EXIST ) + return OUString(); } aName += rLeadingChars; @@ -475,7 +476,7 @@ OUString TempFile::SetTempNameBaseDirectory( const OUString &rBaseName ) OUString TempFile::GetTempNameBaseDirectory() { - return ConstructTempDir_Impl(nullptr); + return ConstructTempDir_Impl(nullptr, false); } } |