[Libreoffice-commits] core.git: Branch 'distro/cib/libreoffice-6-1' - 5 commits - download.lst external/curl external/expat include/sal RepositoryExternal.mk sw/source

Michael Stahl (via logerrit) logerrit at kemper.freedesktop.org
Mon Jul 26 13:24:59 UTC 2021


 RepositoryExternal.mk                             |    2 +-
 download.lst                                      |    8 ++++----
 external/curl/ExternalPackage_curl.mk             |    4 ++--
 external/curl/ExternalProject_curl.mk             |    7 ++++---
 external/curl/curl-7.26.0_win-proxy.patch         |    2 +-
 external/curl/curl-msvc-disable-protocols.patch.1 |    7 ++++---
 external/curl/zlib.patch.0                        |    4 ++--
 external/expat/expat-winapi.patch                 |   14 ++++++++++++++
 include/sal/log.hxx                               |    5 ++++-
 sw/source/core/text/frmform.cxx                   |    2 +-
 10 files changed, 37 insertions(+), 18 deletions(-)

New commits:
commit be58fd35fdec695b7e0d1f6194b05486e4bb121e
Author:     Michael Stahl <michael.stahl at allotropia.de>
AuthorDate: Fri Jul 23 16:19:59 2021 +0200
Commit:     Michael Stahl <michael.stahl at allotropia.de>
CommitDate: Mon Jul 26 14:40:16 2021 +0200

    sw: layout: fix red triangle problem with text frame in sections
    
    First, a document is loaded, then about 4 pages of content are pasted into
    it, in about 6 paste operations.
    
    In an idle layout action, a page's worth of content moves forward; the
    text frame at the bottom was split previously, and is joined.
    
    The follow has the same upper as the master text frame, so this causes
    the upper section frame to shrink:
    
     SwRect::operator=(const SwRect & rRect) Zeile 256
     SwFrameAreaDefinition::FrameAreaWriteAccess::~FrameAreaWriteAccess() Zeile 112
     SwSectionFrame::Shrink_(__int64 nDist, bool bTst) Zeile 2327
     SwFrame::Shrink(__int64 nDist, bool bTst, bool bInfo) Zeile 1562
     SwContentFrame::Cut() Zeile 1339
     SwTextFrame::JoinFrame() Zeile 677
     SwContentFrame::MakeAll(OutputDevice * __formal) Zeile 1310
    
    The ToMaximize(false) check doesn't help because the section frame
    doesn't have a follow (or footnotes).
    
    Then the text frame is formatted, resulting in one line but no height
    for it, and a split after the one line.
    
    The split causes a follow section frame to be created, calling
    SwSectionFrame::SimpleFormat() on the master's upper:
    
     SwFrameAreaDefinition::FramePrintAreaWriteAccess::~FramePrintAreaWriteAccess() Zeile 120
     SwFrame::SetTopBottomMargins(__int64 nTop, __int64 nBot) Zeile 175
     SwRectFnSet::SetYMargins(SwFrame & rFrame, __int64 nTop, __int64 nBottom) Zeile 1405
     SwSectionFrame::SimpleFormat() Zeile 1192
     SwSectionFrame::SwSectionFrame(SwSectionFrame & rSect, bool bMaster) Zeile 110
     SwFrame::GetNextSctLeaf(MakePageType eMakePage) Zeile 1781
     SwFrame::GetLeaf(MakePageType eMakePage, bool bFwd) Zeile 879
     SwFlowFrame::MoveFwd(bool bMakePage, bool bPageBreak, bool bMoveAlways) Zeile 1977
     SwContentFrame::MakeAll(OutputDevice * __formal) Zeile 1349
     SwFrame::PrepareMake(OutputDevice * pRenderContext) Zeile 286
     SwFrame::Calc(OutputDevice * pRenderContext) Zeile 1794
     SwTextFrame::CalcFollow(o3tl::strong_int<long,Tag_TextFrameIndex> nTextOfst) Zeile 281
     SwTextFrame::AdjustFollow_(SwTextFormatter & rLine, o3tl::strong_int<long,Tag_TextFrameIndex> nOffset, o3tl::strong_int<long,Tag_TextFrameIndex> nEnd, const unsigned char nMode) Zeile 608
    
    Now the upper has space but at this point the master text frame is valid
    and not invalidated, so it never grows into the available space.
    
    There is a check to format again in case additional space is available
    in SwTextFrame::CalcFollow() but peculiarly it's disabled if the upper
    is a section frame since initial CVS import.
    
    Removing this check appears to fix the problem.
    
    Change-Id: Ifad545f7e79675af6e33d68c7fcdbc82bd4f8f57
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/119419
    Tested-by: Jenkins
    Reviewed-by: Michael Stahl <michael.stahl at allotropia.de>
    (cherry picked from commit 44cc59db6f4f4f8b2ce5c993a31b5a019a8d7e97)

diff --git a/sw/source/core/text/frmform.cxx b/sw/source/core/text/frmform.cxx
index d5a402ebe4c6..80d90a580bf1 100644
--- a/sw/source/core/text/frmform.cxx
+++ b/sw/source/core/text/frmform.cxx
@@ -333,7 +333,7 @@ bool SwTextFrame::CalcFollow(TextFrameIndex const nTextOfst)
 
         const long nRemaining =
                  - aRectFnSet.BottomDist( GetUpper()->getFrameArea(), nOldBottom );
-        if (  nRemaining > 0 && !GetUpper()->IsSctFrame() &&
+        if (  nRemaining > 0 &&
               nRemaining != ( aRectFnSet.IsVert() ?
                               nMyPos - getFrameArea().Right() :
                               getFrameArea().Top() - nMyPos ) )
commit 850d48846bf95fc3bb8db4bcfb4fb2d11b03b6f0
Author:     Michael Stahl <michael.stahl at allotropia.de>
AuthorDate: Wed Jul 21 11:57:51 2021 +0200
Commit:     Michael Stahl <michael.stahl at allotropia.de>
CommitDate: Mon Jul 26 14:40:16 2021 +0200

    curl: upgrade to release 7.78.0
    
    * Fixes CVE-2020-8284 CVE-2021-22924
    * Also fixes these which don't look relevant to LO:
      CVE-2020-8231
      CVE-2020-8285 CVE-2020-8286
      CVE-2021-22876 CVE-2021-22890
      CVE-2021-22897 CVE-2021-22898 CVE-2021-22901
      CVE-2021-22922 CVE-2021-22923 CVE-2021-22925 CVE-2021-22926
    * disable some new protocols and dependencies
    * remove curl-ios.patch.1 as the code no longer exists upstream
    
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/119313
    Tested-by: Jenkins
    Reviewed-by: Michael Stahl <michael.stahl at allotropia.de>
    (cherry picked from commit 946f457c885bd10ff1a7281c351f3981f035f5a7)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/119262
    Reviewed-by: Thorsten Behrens <thorsten.behrens at allotropia.de>
    (cherry picked from commit 020eb3b363a5c9444c97075a2e15b63ccbe7bf2d)
    
    Change-Id: I12d5f87f4d503a5f9859226a05cfe2a07e46d993

diff --git a/RepositoryExternal.mk b/RepositoryExternal.mk
index e029f3f32026..a892a59452e3 100644
--- a/RepositoryExternal.mk
+++ b/RepositoryExternal.mk
@@ -2775,7 +2775,7 @@ $(call gb_LinkTarget_set_include,$(1),\
 
 ifeq ($(COM),MSC)
 $(call gb_LinkTarget_add_libs,$(1),\
-	$(call gb_UnpackedTarball_get_dir,curl)/builds/libcurl-vc12-$(if $(filter X86_64,$(CPUNAME)),x64,x86)-$(if $(MSVC_USE_DEBUG_RUNTIME),debug,release)-dll-ipv6-sspi-winssl/lib/libcurl$(if $(MSVC_USE_DEBUG_RUNTIME),_debug).lib \
+	$(call gb_UnpackedTarball_get_dir,curl)/builds/libcurl-vc12-$(if $(filter X86_64,$(CPUNAME)),x64,x86)-$(if $(MSVC_USE_DEBUG_RUNTIME),debug,release)-dll-ipv6-sspi-schannel/lib/libcurl$(if $(MSVC_USE_DEBUG_RUNTIME),_debug).lib \
 )
 else
 $(call gb_LinkTarget_add_libs,$(1),\
diff --git a/download.lst b/download.lst
index 6e5b355beabc..b4f7df8d263c 100644
--- a/download.lst
+++ b/download.lst
@@ -29,8 +29,8 @@ export CPPUNIT_SHA256SUM := 3d569869d27b48860210c758c4f313082103a5e58219a7669b52
 export CPPUNIT_TARBALL := cppunit-1.14.0.tar.gz
 export CT2N_SHA256SUM := 71b238efd2734be9800af07566daea8d6685aeed28db5eb5fa0e6453f4d85de3
 export CT2N_TARBALL := 1f467e5bb703f12cbbb09d5cf67ecf4a-converttexttonumber-1-5-0.oxt
-export CURL_SHA256SUM := cdf18794393d8bead915312708a9e5d819c6e9919de14b20d5c8e7987abd9772
-export CURL_TARBALL := curl-7.71.0.tar.xz
+export CURL_SHA256SUM := be42766d5664a739c3974ee3dfbbcbe978a4ccb1fe628bb1d9b59ac79e445fb5
+export CURL_TARBALL := curl-7.78.0.tar.xz
 export EBOOK_SHA256SUM := 7e8d8ff34f27831aca3bc6f9cc532c2f90d2057c778963b884ff3d1e34dfe1f9
 export EBOOK_TARBALL := libe-book-0.1.3.tar.xz
 export EPOXY_SHA256SUM := 1d8668b0a259c709899e1c4bab62d756d9002d546ce4f59c9665e2fc5f001a64
diff --git a/external/curl/ExternalPackage_curl.mk b/external/curl/ExternalPackage_curl.mk
index 8da569e3e0cf..1fb360c85ca9 100644
--- a/external/curl/ExternalPackage_curl.mk
+++ b/external/curl/ExternalPackage_curl.mk
@@ -14,13 +14,13 @@ $(eval $(call gb_ExternalPackage_use_external_project,curl,curl))
 ifneq ($(DISABLE_DYNLOADING),TRUE)
 
 ifeq ($(COM),MSC)
-$(eval $(call gb_ExternalPackage_add_file,curl,$(LIBO_LIB_FOLDER)/libcurl$(if $(MSVC_USE_DEBUG_RUNTIME),_debug).dll,builds/libcurl-vc12-$(if $(filter X86_64,$(CPUNAME)),x64,x86)-$(if $(MSVC_USE_DEBUG_RUNTIME),debug,release)-dll-ipv6-sspi-winssl/bin/libcurl$(if $(MSVC_USE_DEBUG_RUNTIME),_debug).dll))
+$(eval $(call gb_ExternalPackage_add_file,curl,$(LIBO_LIB_FOLDER)/libcurl$(if $(MSVC_USE_DEBUG_RUNTIME),_debug).dll,builds/libcurl-vc12-$(if $(filter X86_64,$(CPUNAME)),x64,x86)-$(if $(MSVC_USE_DEBUG_RUNTIME),debug,release)-dll-ipv6-sspi-schannel/bin/libcurl$(if $(MSVC_USE_DEBUG_RUNTIME),_debug).dll))
 else ifeq ($(OS),MACOSX)
 $(eval $(call gb_ExternalPackage_add_file,curl,$(LIBO_LIB_FOLDER)/libcurl.4.dylib,lib/.libs/libcurl.4.dylib))
 else ifeq ($(OS),AIX)
 $(eval $(call gb_ExternalPackage_add_file,curl,$(LIBO_LIB_FOLDER)/libcurl.so,lib/.libs/libcurl.so.4))
 else
-$(eval $(call gb_ExternalPackage_add_file,curl,$(LIBO_LIB_FOLDER)/libcurl.so.4,lib/.libs/libcurl.so.4.6.0))
+$(eval $(call gb_ExternalPackage_add_file,curl,$(LIBO_LIB_FOLDER)/libcurl.so.4,lib/.libs/libcurl.so.4.7.0))
 endif
 
 endif # $(DISABLE_DYNLOADING)
diff --git a/external/curl/ExternalProject_curl.mk b/external/curl/ExternalProject_curl.mk
index ebcb6068b7c1..81886b36fbc5 100644
--- a/external/curl/ExternalProject_curl.mk
+++ b/external/curl/ExternalProject_curl.mk
@@ -35,13 +35,13 @@ ifeq ($(SYSTEM_NSS),)
 curl_CPPFLAGS += -I$(call gb_UnpackedTarball_get_dir,nss)/dist/public/nss
 endif
 
-# use --with-darwinssl on Mac OS X >10.5 and iOS to get a native UI for SSL certs for CMIS usage
+# use --with-secure-transport on Mac OS X >10.5 and iOS to get a native UI for SSL certs for CMIS usage
 # use --with-nss only on platforms other than Mac OS X and iOS
 $(call gb_ExternalProject_get_state_target,curl,build):
 	$(call gb_ExternalProject_run,build,\
 		./configure \
 			$(if $(filter IOS MACOSX,$(OS)),\
-				--with-darwinssl,\
+				--with-secure-transport,\
 				$(if $(ENABLE_NSS),--with-nss$(if $(SYSTEM_NSS),,="$(call gb_UnpackedTarball_get_dir,nss)/dist/out"),--without-nss)) \
 			--without-ssl --without-gnutls --without-polarssl --without-cyassl --without-axtls --without-mbedtls \
 			--enable-ftp --enable-http --enable-ipv6 \
@@ -49,7 +49,8 @@ $(call gb_ExternalProject_get_state_target,curl,build):
 			--without-libssh2 --without-metalink --without-nghttp2 \
 			--without-libssh --without-brotli \
 			--without-ngtcp2 --without-quiche \
-			--disable-ares \
+			--without-zstd --without-hyper --without-gsasl --without-gssapi \
+			--disable-mqtt --disable-ares \
 			--disable-dict --disable-file --disable-gopher --disable-imap \
 			--disable-ldap --disable-ldaps --disable-manual --disable-pop3 \
 			--disable-rtsp --disable-smb --disable-smtp --disable-telnet  \
diff --git a/external/curl/curl-7.26.0_win-proxy.patch b/external/curl/curl-7.26.0_win-proxy.patch
index 5361433a917b..5bb98fa04741 100644
--- a/external/curl/curl-7.26.0_win-proxy.patch
+++ b/external/curl/curl-7.26.0_win-proxy.patch
@@ -114,7 +114,7 @@
 @@ -4663,6 +4739,7 @@
    }
    if(proxy)
-     infof(conn->data, "Uses proxy env variable %s == '%s'\n", envp, proxy);
+     infof(data, "Uses proxy env variable %s == '%s'", envp, proxy);
 +#endif /* WIN32 */
  
    return proxy;
diff --git a/external/curl/curl-msvc-disable-protocols.patch.1 b/external/curl/curl-msvc-disable-protocols.patch.1
index c8747a5fcc1d..a6d06c69b004 100644
--- a/external/curl/curl-msvc-disable-protocols.patch.1
+++ b/external/curl/curl-msvc-disable-protocols.patch.1
@@ -2,18 +2,19 @@ disable protocols nobody needs in MSVC build
 
 --- curl/lib/config-win32.h.orig	2017-08-09 16:43:29.464000000 +0200
 +++ curl/lib/config-win32.h	2017-08-09 16:47:38.549200000 +0200
-@@ -733,4 +733,19 @@
+@@ -733,4 +733,20 @@
  #  define ENABLE_IPV6 1
  #endif
  
 +#define CURL_DISABLE_DICT 1
 +#define CURL_DISABLE_FILE 1
-+//#undef CURL_DISABLE_FTP
++#undef CURL_DISABLE_FTP
 +#define CURL_DISABLE_GOPHER 1
-+//#undef CURL_DISABLE_HTTP
++#undef CURL_DISABLE_HTTP
 +#define CURL_DISABLE_IMAP 1
 +#define CURL_DISABLE_LDAP 1
 +#define CURL_DISABLE_LDAPS 1
++#define CURL_DISABLE_MQTT 1
 +#define CURL_DISABLE_POP3 1
 +#define CURL_DISABLE_RTSP 1
 +#define CURL_DISABLE_SMB 1
diff --git a/external/curl/zlib.patch.0 b/external/curl/zlib.patch.0
index 189e820d1afa..f4a0ad4b152f 100644
--- a/external/curl/zlib.patch.0
+++ b/external/curl/zlib.patch.0
@@ -54,8 +54,8 @@
  clean_LIBS=$LIBS
 -ZLIB_LIBS=""
  AC_ARG_WITH(zlib,
- AC_HELP_STRING([--with-zlib=PATH],[search for zlib in PATH])
- AC_HELP_STRING([--without-zlib],[disable use of zlib]),
+ AS_HELP_STRING([--with-zlib=PATH],[search for zlib in PATH])
+ AS_HELP_STRING([--without-zlib],[disable use of zlib]),
                 [OPT_ZLIB="$withval"])
  
  if test "$OPT_ZLIB" = "no" ; then
commit dc0fa8b2444769ae7f748b89b88d4606eec589e7
Author:     Caolán McNamara <caolanm at redhat.com>
AuthorDate: Tue May 25 10:44:13 2021 +0100
Commit:     Michael Stahl <michael.stahl at allotropia.de>
CommitDate: Fri Jul 23 17:28:00 2021 +0200

    upgrade to Expat 2.4.1
    
    drop ubsan patch in favour of fix applied as
    https://github.com/libexpat/libexpat/pull/398
    
    Change-Id: I59eb9e24206b9a4cf323b7f7d48d8df0792a1c46
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/116102
    Tested-by: Jenkins
    Reviewed-by: Michael Stahl <michael.stahl at allotropia.de>
    (cherry picked from commit 740d12d8a8294d4bfd28e6c3e4cf1e0ed560b198)

diff --git a/download.lst b/download.lst
index d9a675fabe21..6e5b355beabc 100644
--- a/download.lst
+++ b/download.lst
@@ -42,8 +42,8 @@ export EPUBGEN_TARBALL := libepubgen-0.1.1.tar.xz
 export ETONYEK_SHA256SUM := 9dc92347aee0cc9ed57b175a3e21f9d96ebe55d30fecb10e841d1050794ed82d
 export ETONYEK_VERSION_MICRO := 8
 export ETONYEK_TARBALL := libetonyek-0.1.$(ETONYEK_VERSION_MICRO).tar.xz
-export EXPAT_SHA256SUM := 9a130948b05a82da34e4171d5f5ae5d321d9630277af02c8fa51e431f6475102
-export EXPAT_TARBALL := expat-2.2.8.tar.bz2
+export EXPAT_SHA256SUM := 2f9b6a580b94577b150a7d5617ad4643a4301a6616ff459307df3e225bcfbf40
+export EXPAT_TARBALL := expat-2.4.1.tar.bz2
 export FIREBIRD_SHA256SUM := 6994be3555e23226630c587444be19d309b25b0fcf1f87df3b4e3f88943e5860
 export FIREBIRD_TARBALL := Firebird-3.0.0.32483-0.tar.bz2
 export FONTCONFIG_SHA256SUM := cf0c30807d08f6a28ab46c61b8dbd55c97d2f292cf88f3a07d3384687f31f017
diff --git a/external/expat/expat-winapi.patch b/external/expat/expat-winapi.patch
index b33c12b83b4c..bd4da1472fc8 100644
--- a/external/expat/expat-winapi.patch
+++ b/external/expat/expat-winapi.patch
@@ -11,3 +11,17 @@
  #  endif
  #endif /* not defined XML_STATIC */
  
+--- misc/expat-2.1.0/lib/xmlparse.c	2021-05-23 16:56:25.000000000 +0100
++++ misc/build/expat-2.1.0/lib/xmlparse.c	2021-05-25 12:42:11.997173600 +0100
+@@ -92,6 +92,11 @@
+ 
+ #include <expat_config.h>
+ 
++#ifdef _WIN32
++#  undef HAVE_GETRANDOM
++#  undef HAVE_SYSCALL_GETRANDOM
++#endif
++
+ #include "ascii.h"
+ #include "expat.h"
+ #include "siphash.h"
commit b2e8cedaf012413eb43247730b19ecb9d70f39db
Author:     Stephan Bergmann <sbergman at redhat.com>
AuthorDate: Wed May 5 08:20:18 2021 +0200
Commit:     Michael Stahl <michael.stahl at allotropia.de>
CommitDate: Fri Jul 23 17:27:59 2021 +0200

    Adapt to "libstdc++: Implement LWG 1203 for rvalue iostreams"
    
    <https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=aa475c4ac80733f85ba47b109fc1900f05e810e2>
    towards GCC 12, so that now "the return type is the original rvalue stream type
    not its base class."  (And which would thus have caused issues like
    
    > sfx2/source/control/bindings.cxx:1323:19: error: dynamic_cast from rvalue to reference type '::std::ostringstream &' (aka 'basic_ostringstream<char> &')
    >                 ? SAL_STREAM("File: " << pFile << " Line: " << nLine) : ""));
    >                 ~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    > include/sal/log.hxx:198:6: note: expanded from macro 'SAL_STREAM'
    >     (dynamic_cast< ::std::ostringstream & >(::std::ostringstream() << stream).str())
    >      ^
    > include/sal/log.hxx:341:20: note: expanded from macro 'SAL_INFO'
    >         SAL_WHERE, stream)
    >         ~~~~~~~~~~~^~~~~~~
    > include/sal/log.hxx:155:68: note: expanded from macro 'SAL_DETAIL_LOG_STREAM'
    >                 SAL_DETAIL_LOG_STREAM_PRIVATE_(level, area, where, stream); \
    >                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
    > include/sal/log.hxx:133:45: note: expanded from macro 'SAL_DETAIL_LOG_STREAM_PRIVATE_'
    >             ::sal::detail::StreamStart() << stream) == 1) \
    >                                             ^~~~~~
    
    now.  While the issue with old libstdc++ that originally prompted the
    dynamic_cast was
    
    > sfx2/source/control/bindings.cxx:1323:19: error: no member named 'str' in 'std::basic_ostream<char>'
    >                 ? SAL_STREAM("File: " << pFile << " Line: " << nLine) : ""));
    >                 ~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    > include/sal/log.hxx:194:40: note: expanded from macro 'SAL_STREAM'
    >     (::std::ostringstream() << stream).str()
    >                                        ^
    > include/sal/log.hxx:336:20: note: expanded from macro 'SAL_INFO'
    >         SAL_WHERE, stream)
    >         ~~~~~~~~~~~^~~~~~~
    > include/sal/log.hxx:155:68: note: expanded from macro 'SAL_DETAIL_LOG_STREAM'
    >                 SAL_DETAIL_LOG_STREAM_PRIVATE_(level, area, where, stream); \
    >                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
    > include/sal/log.hxx:133:45: note: expanded from macro 'SAL_DETAIL_LOG_STREAM_PRIVATE_'
    >             ::sal::detail::StreamStart() << stream) == 1) \
    >                                             ^~~~~~
    
    .)
    
    The libstdc++ macro _GLIBCXX_RELEASE is reportedly available since GCC 7.1.
    
    Change-Id: I1ee6eabb66355c1f28b9d305cbd85bac50d6b0e1
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/115121
    Tested-by: Jenkins
    Reviewed-by: Stephan Bergmann <sbergman at redhat.com>
    
    (cherry picked from commit 1f3dddd6f21d91c429190ae314dadeec409f35f4, plus
    follow-up 95e26d3dce4f5a3b2d010d5ca47b4e450905a100 "tdf#142326: Adapt to
    'libstdc++: Implement LWG 1203 for rvalue iostreams'")
    Change-Id: I7c8fef25e15fcfa9b83924467dc86dc2957fbd7d
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/116447
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    (cherry picked from commit 428206c3c1c54d01435cf4e4a07174cfbd567335)

diff --git a/include/sal/log.hxx b/include/sal/log.hxx
index 00d533ab5495..f85c7d882134 100644
--- a/include/sal/log.hxx
+++ b/include/sal/log.hxx
@@ -161,7 +161,10 @@ inline char const * unwrapStream(SAL_UNUSED_PARAMETER StreamIgnore const &) {
 
     @since LibreOffice 3.5
 */
-#if defined _LIBCPP_VERSION || (defined _MSC_VER && _MSC_VER >= 1915)
+#if defined _LIBCPP_VERSION \
+    || (defined _GLIBCXX_RELEASE \
+        && (_GLIBCXX_RELEASE >= 12 || (_GLIBCXX_RELEASE == 11 && __GLIBCXX__ > 20210428))) \
+    || (defined _MSC_VER && _MSC_VER >= 1915)
 #define SAL_STREAM(stream) \
     (::std::ostringstream() << stream).str()
 #else
commit 4c97240e0c0803eca275bd5c883a771a4faf5d55
Author:     Stephan Bergmann <sbergman at redhat.com>
AuthorDate: Thu Aug 30 18:31:33 2018 +0200
Commit:     Michael Stahl <michael.stahl at allotropia.de>
CommitDate: Fri Jul 23 17:27:59 2021 +0200

    At least MSVC 19.15.26726 (VS 2017 15.8.1) needs the SAL_STREAM fix too
    
    ...that was originally introduced for libc++ in
    691b6ea8e100fc55f0ff70a82511722733113a07 "Make the SAL_STREAM thing compile with
    clang++ -std=c++11 -stdlib=libc++".  MSVC and clang-cl builds now started to
    fail like
    
    > [build CXX] sfx2/source/control/bindings.cxx
    > C:/lo-clang/core/sfx2/source/control/bindings.cxx(1333,19):  error: dynamic_cast from rvalue to reference type '::std::ostringstream &' (aka 'basic_ostringstream<char, char_traits<char>, allocator<char> > &')
    >                 ? SAL_STREAM("File: " << pFile << " Line: " << nLine) : ""));
    >                 ~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    > C:/lo-clang/core/include\sal/log.hxx(169,6):  note: expanded from macro 'SAL_STREAM'
    >     (dynamic_cast< ::std::ostringstream & >(::std::ostringstream() << stream).str())
    >      ^
    > C:/lo-clang/core/include\sal/log.hxx(306,20):  note: expanded from macro 'SAL_INFO'
    >         SAL_WHERE, stream)
    >         ~~~~~~~~~~~^~~~~~~
    > C:/lo-clang/core/include\sal/log.hxx(120,53):  note: expanded from macro 'SAL_DETAIL_LOG_STREAM'
    >                     ::sal::detail::StreamStart() << stream) == 1) \
    >                                                     ^~~~~~
    [...]
    
    Change-Id: Icb311c8a61cd7e7f450a45fc7f07327e94b5d186
    Reviewed-on: https://gerrit.libreoffice.org/59833
    Tested-by: Jenkins
    Reviewed-by: Stephan Bergmann <sbergman at redhat.com>
    (cherry picked from commit 965ac9915280e3d570d7b32ff20799507f4e42eb)

diff --git a/include/sal/log.hxx b/include/sal/log.hxx
index 6bcd34b09fe2..00d533ab5495 100644
--- a/include/sal/log.hxx
+++ b/include/sal/log.hxx
@@ -161,7 +161,7 @@ inline char const * unwrapStream(SAL_UNUSED_PARAMETER StreamIgnore const &) {
 
     @since LibreOffice 3.5
 */
-#ifdef _LIBCPP_VERSION
+#if defined _LIBCPP_VERSION || (defined _MSC_VER && _MSC_VER >= 1915)
 #define SAL_STREAM(stream) \
     (::std::ostringstream() << stream).str()
 #else


More information about the Libreoffice-commits mailing list