diff options
author | matt_51 <matthieu.gay.cap@gmail.com> | 2013-11-05 11:40:56 +0100 |
---|---|---|
committer | Michael Stahl <mstahl@redhat.com> | 2013-11-19 05:10:58 -0600 |
commit | 3d12549335229aca1a6a57575292111274709992 (patch) | |
tree | 49b1e8fc91042571e3b70da613fd61f256a46bcd /sfx2/source | |
parent | 363cc397172f2b0a94d9c4dc44fc8d95072795a3 (diff) |
fdo#70345 Reuse XStream for Windows platform create a new one for others.
Change-Id: I911c24b82b55445c6f95e14be29759e2fe3d9dfd
Reviewed-on: https://gerrit.libreoffice.org/6580
Reviewed-by: Michael Stahl <mstahl@redhat.com>
Tested-by: Michael Stahl <mstahl@redhat.com>
Diffstat (limited to 'sfx2/source')
-rw-r--r-- | sfx2/source/doc/docfile.cxx | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/sfx2/source/doc/docfile.cxx b/sfx2/source/doc/docfile.cxx index 3d23f50bc141..3830b11c9d4a 100644 --- a/sfx2/source/doc/docfile.cxx +++ b/sfx2/source/doc/docfile.cxx @@ -604,13 +604,26 @@ SvStream* SfxMedium::GetOutStream() if ( pImp->pTempFile ) { - // don't try to re-use XOutStream from xStream if that exists; + // On windows we try to re-use XOutStream from xStream if that exists; + // because opening new SvFileStream in this situation may fail with ERROR_SHARING_VIOLATION + #ifdef WNT + if (pImp->xStream.is()) + { + assert(pImp->xStream->getOutputStream().is()); // need that... + pImp->m_pOutStream = utl::UcbStreamHelper::CreateStream( + pImp->xStream, false); + } + else + { + pImp->m_pOutStream = new SvFileStream( + pImp->m_aName, STREAM_STD_READWRITE); + } + // On Unix don't try to re-use XOutStream from xStream if that exists; // it causes fdo#59022 (fails opening files via SMB on Linux) - // OTOH opening new SvFileStream in this situation may fail on - // Windows with ERROR_SHARING_VIOLATION... but that is apparently - // not a problem in practice currently + #else pImp->m_pOutStream = new SvFileStream( pImp->m_aName, STREAM_STD_READWRITE); + #endif CloseStorage(); } } |