On 10/08/20 10:22 +0100, Jozef Lawrynowicz wrote:
Hi,

On Thu, Aug 06, 2020 at 06:48:36PM +0000, Jonathan Wakely via Gcc-patches wrote:

I've now pushed that combined patch to master.

In libstdc++-v3/include/bits/basic_string.tcc around line 1190, there's a
missing "#if __cpp_exceptions" test for the try/catch block that was
added by this patch.

That prevents libstdc++ building with -fno-exceptions.

Fixed with this patch, thanks for reporting it.

Tested powerpc64le-linux, committed to trunk.


commit 8bd92d8097d44be01a2bc7e14f7916d151dffcd6
Author: Jonathan Wakely <jwak...@redhat.com>
Date:   Mon Aug 10 12:02:18 2020

    libstdc++: Check __cpp_exceptions in basic_string::reserve()
    
    If exceptions are disabled then reallocating could abort, so ignore
    shrink-to-fit requests.
    
    libstdc++-v3/ChangeLog:
    
            * include/bits/basic_string.tcc [_GLIBCXX_USE_CXX11_ABI=0]
            (basic_string::reserve()): Do nothing if exceptions are not
            enabled.

diff --git a/libstdc++-v3/include/bits/basic_string.tcc b/libstdc++-v3/include/bits/basic_string.tcc
index a64b63a37fb..95d2fdbd6d6 100644
--- a/libstdc++-v3/include/bits/basic_string.tcc
+++ b/libstdc++-v3/include/bits/basic_string.tcc
@@ -1179,6 +1179,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     basic_string<_CharT, _Traits, _Alloc>::
     reserve()
     {
+#if __cpp_exceptions
       if (length() < capacity() || _M_rep()->_M_is_shared())
 	try
 	  {
@@ -1191,6 +1192,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 	  { throw; }
 	catch (...)
 	  { /* swallow the exception */ }
+#endif
     }
 
     template<typename _CharT, typename _Traits, typename _Alloc>

Reply via email to