Heads up: Use MSVC's /permissive- to make it more standards conforming

Stephan Bergmann sbergman at redhat.com
Wed Jan 13 10:46:17 UTC 2021


I just landed 
<https://git.libreoffice.org/core/+/b4b7e92cbf5a212cc1c648af86df2dee364d48c8%5E%21> 
"Use MSVC's /permissive- to make it more standards conforming" on master 
(hoping that it will unblock 
<https://gerrit.libreoffice.org/c/core/+/108939> "Verify o3tl::temporary 
of a copied lvalue works as expected", besides standards conformance 
probably being a good thing anyway).

Apparently due to 
<https://lists.freedesktop.org/archives/libreoffice/2021-January/086600.html> 
"MSVC differences among Jenkins gerrit_windows builders", different 
patch sets of that change had failed on different Jenkins build machines 
in different ways:

Patch set 1 (<https://gerrit.libreoffice.org/c/core/+/108961/1/>) had 
failed on tb77 (<https://ci.libreoffice.org/job/gerrit_windows/85301/>) 
using

> export CXX=C:/PROGRA~2/MIB055~1/2019/COMMUN~1/VC/Tools/MSVC/1427~1.291/bin/Hostx64/x86/cl.exe

with a spurious-looking

> C:\cygwin\home\tdf\jenkins\workspace\gerrit_windows\sw\source\filter\ww8\ww8par3.cxx(630) : error C2220: the following warning is treated as an error
> C:\cygwin\home\tdf\jenkins\workspace\gerrit_windows\sw\source\filter\ww8\ww8par3.cxx(630) : warning C4789: buffer 'aLVL' of size 32 bytes will be overrun; 33 bytes will be written starting at offset 0

that should meanwhile have been addressed with 
<https://git.libreoffice.org/core/+/b269e95f7ee36fbe6cbe5e3ddc5e10aa4ef651cd%5E%21> 
"WW8LVL members do not require a specific layout".

Rebased patch set 2 
(<https://gerrit.libreoffice.org/c/core/+/108961/2/>) had failed on tb73 
(<https://ci.libreoffice.org/job/gerrit_windows/85676/>) using

> export CXX=C:/PROGRA~2/MIB055~1/2019/COMMUN~1/VC/Tools/MSVC/1425~1.286/bin/Hostx64/x86/cl.exe

with

> C:/cygwin/home/tdf/lode/jenkins/workspace/gerrit_windows at 2/include\o3tl/lru_map.hxx(71): error C2039: 'min': is not a member of 'std'
> C:/PROGRA~2/MIB055~1/2019/COMMUN~1/VC/Tools/MSVC/1425~1.286/Include\map(25): note: see declaration of 'std'
> C:/cygwin/home/tdf/lode/jenkins/workspace/gerrit_windows at 2/include\o3tl/lru_map.hxx(174): note: see reference to class template instantiation 'o3tl::lru_map<Key,Value,KeyHash,KeyEqual>' being compiled
[...]
> make[1]: *** [C:/cygwin/home/tdf/lode/jenkins/workspace/gerrit_windows at 2/solenv/gbuild/LinkTarget.mk:301: C:/cygwin/home/tdf/lode/jenkins/workspace/gerrit_windows at 2/workdir/CxxObject/o3tl/qa/test-lru_map.o] Error 2

that should meanwhile have been addressed with 
<https://git.libreoffice.org/core/+/e24cc814b5b6e50967116cb3908e4bf56b7aee4b%5E%21> 
"Missing include (for std::min)".

The final rebased patch set 3 
(<https://gerrit.libreoffice.org/c/core/+/108961/3/>) has succeeded on 
tb73 (<https://ci.libreoffice.org/job/gerrit_windows/85758/>), but I 
haven't seen it succeed with other MSVC versions, e.g. on tb77.  (I had 
seen the change succeed right from the start, without any of the issues, 
with my local MSVC 2019 16.8.3 build, though.)

So there is apparently a slight chance that builds with different 
versions of MSVC will still start to fail now.  Please let me know if 
you encounter such an issue that smells like it was caused by the 
introduction of /permissive-.



More information about the LibreOffice mailing list