Update ooo320-m1
[ooovba.git] / applied_patches / 0106-webdav-locking-local-temp-file.diff
blobcead8b33c8feae966cfa77f7d590d7e20db617b3
1 diff --git sfx2/source/doc/docfile.cxx sfx2/source/doc/docfile.cxx
2 index 1a7f67f..2e55e32 100644
3 --- sfx2/source/doc/docfile.cxx
4 +++ sfx2/source/doc/docfile.cxx
5 @@ -2153,11 +2153,20 @@ void SfxMedium::DoInternalBackup_Impl( const ::ucbhelper::Content& aOriginalCont
6 if ( pImp->m_aBackupURL.getLength() )
7 return; // the backup was done already
9 - ::utl::TempFile aTransactTemp( aPrefix, &aExtension, &aDestDir );
10 - aTransactTemp.EnableKillingFile( sal_False );
11 + ::rtl::OUString aBackupName;
12 + ::rtl::OUString aBackupURL;
13 + {
14 + // a living aTransactTemp kills WebDAV with SAL_ENABLE_FILE_LOCKING=1,
15 + // because then it attempts to have 2 file handles pointing to the same
16 + // file name...
17 + ::utl::TempFile aTransactTemp( aPrefix, &aExtension, &aDestDir );
18 + aTransactTemp.EnableKillingFile( sal_True );
20 - INetURLObject aBackObj( aTransactTemp.GetURL() );
21 - ::rtl::OUString aBackupName = aBackObj.getName( INetURLObject::LAST_SEGMENT, true, INetURLObject::DECODE_WITH_CHARSET );
22 + INetURLObject aBackObj( aTransactTemp.GetURL() );
24 + aBackupName = aBackObj.getName( INetURLObject::LAST_SEGMENT, true, INetURLObject::DECODE_WITH_CHARSET );
25 + aBackupURL = aBackObj.GetMainURL( INetURLObject::NO_DECODE );
26 + }
28 Reference < ::com::sun::star::ucb::XCommandEnvironment > xDummyEnv;
29 ::ucbhelper::Content aBackupCont;
30 @@ -2170,16 +2179,13 @@ void SfxMedium::DoInternalBackup_Impl( const ::ucbhelper::Content& aOriginalCont
31 aBackupName,
32 NameClash::OVERWRITE ) )
34 - pImp->m_aBackupURL = aBackObj.GetMainURL( INetURLObject::NO_DECODE );
35 + pImp->m_aBackupURL = aBackupURL;
36 pImp->m_bRemoveBackup = sal_True;
39 catch( Exception& )
43 - if ( !pImp->m_aBackupURL.getLength() )
44 - aTransactTemp.EnableKillingFile( sal_True );
47 //------------------------------------------------------------------
48 diff --git ucb/source/ucp/webdav/webdavcontent.cxx ucb/source/ucp/webdav/webdavcontent.cxx
49 index 84cc057..871a233 100644
50 --- ucb/source/ucp/webdav/webdavcontent.cxx
51 +++ ucb/source/ucp/webdav/webdavcontent.cxx
52 @@ -2063,8 +2063,7 @@ uno::Any Content::open(
54 // Open document.
56 - if ( ( rArg.Mode == ucb::OpenMode::DOCUMENT_SHARE_DENY_NONE ) ||
57 - ( rArg.Mode == ucb::OpenMode::DOCUMENT_SHARE_DENY_WRITE ) )
58 + if ( rArg.Mode == ucb::OpenMode::DOCUMENT_SHARE_DENY_WRITE )
60 // Currently(?) unsupported.
61 ucbhelper::cancelCommandExecution(