diff options
author | Armin Le Grand (Allotropia) <Armin.Le.Grand@me.com> | 2021-03-09 19:53:25 +0100 |
---|---|---|
committer | Armin Le Grand <Armin.Le.Grand@me.com> | 2021-03-12 10:01:33 +0100 |
commit | 2b4cd99d3360ccffb9829a02412824864d045753 (patch) | |
tree | 29591632664366d413ad08f1b4061094d4af159e /sal | |
parent | bded8ae22230da161377846caea0010f038e69a1 (diff) |
tdf#126742 make Windows file handling more unx-like
The bug mentioned happens due to a system-dependent
difference: Unx-systems allow files to be opened for
write multiple times while our windows implementation
until now did prevent that.
For that reason an embedded OLE which is still opened
in the same LO instance behaves wrong/strange - the
e.g. changed size cannot be written (to the file).
Since we already have unx-like handling and in that
scenario useful sync has to be done anyways, no new
scenario will be created. Only Windows implemenation
will change to behave closer to unx-like behaviour,
I already test-built that on gerrit to make sure all
tests for Windows work as before.
I thought about this for quite some time, but see no
too big risk. For thoughts/discussion please refer
to the task.
Change-Id: I8dbfd70c2f69d0a013f445e152e597f37fa6ecc7
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/112237
Tested-by: Jenkins
Reviewed-by: Armin Le Grand <Armin.Le.Grand@me.com>
Diffstat (limited to 'sal')
-rw-r--r-- | sal/osl/w32/file.cxx | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/sal/osl/w32/file.cxx b/sal/osl/w32/file.cxx index ca31d714dfef..44b8ac97ba09 100644 --- a/sal/osl/w32/file.cxx +++ b/sal/osl/w32/file.cxx @@ -657,15 +657,15 @@ oslFileError SAL_CALL osl_openFile( if (result != osl_File_E_None) return result; - DWORD dwAccess = GENERIC_READ, dwShare = FILE_SHARE_READ, dwCreation = 0; + // tdf126742 use FILE_SHARE_WRITE to get closer to non-Windows plattform behavoiur, + // for details and discussion see task please + DWORD dwAccess = GENERIC_READ, dwShare = FILE_SHARE_READ | FILE_SHARE_WRITE, dwCreation = 0; if (uFlags & osl_File_OpenFlag_Write) dwAccess |= GENERIC_WRITE; - else - dwShare |= FILE_SHARE_WRITE; if (uFlags & osl_File_OpenFlag_NoLock) - dwShare |= FILE_SHARE_WRITE | FILE_SHARE_DELETE; + dwShare |= FILE_SHARE_DELETE; if (uFlags & osl_File_OpenFlag_Create) dwCreation |= CREATE_NEW; |