summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArmin Le Grand (Allotropia) <Armin.Le.Grand@me.com>2021-03-09 19:53:25 +0100
committerThorsten Behrens <thorsten.behrens@allotropia.de>2021-03-15 11:42:32 +0100
commit5f7e94735ecd38faa8beb825f76e0d483fee7101 (patch)
tree1ac0bb91eafed5a6925b75a0b66c0860ba76a3a0
parente83670cfb0184aa6719df15546bbd909554491d2 (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> (cherry picked from commit 2b4cd99d3360ccffb9829a02412824864d045753) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/112427 Reviewed-by: Thorsten Behrens <thorsten.behrens@allotropia.de>
-rw-r--r--sal/osl/w32/file.cxx8
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;