[Libreoffice-commits] core.git: 2 commits - external/mysql-connector-cpp include/rtl sal/osl sal/qa

Libreoffice Gerrit user logerrit at kemper.freedesktop.org
Tue Aug 21 05:36:13 UTC 2018


 external/mysql-connector-cpp/Library_mysqlcppconn.mk |    2 +
 include/rtl/stringutils.hxx                          |   21 ++++++++++++++++---
 sal/osl/unx/nlsupport.cxx                            |    1 
 sal/qa/rtl/strings/test_oustring_stringliterals.cxx  |    3 ++
 4 files changed, 24 insertions(+), 3 deletions(-)

New commits:
commit fd71427f6502f4540053c10d8eb9b495451d959d
Author:     Stephan Bergmann <sbergman at redhat.com>
AuthorDate: Mon Aug 20 21:41:26 2018 +0200
Commit:     Stephan Bergmann <sbergman at redhat.com>
CommitDate: Tue Aug 21 07:36:00 2018 +0200

    external/mysql-connector-cpp uses std::auto_ptr, must not be compiled as C++17
    
    But gb_CXX03FLAGS may contain -Werror=c++11-extensions and would thus fail with
    
    > [CXX] workdir/UnpackedTarball/mysql-connector-cpp/driver/mysql_connection.cpp
    > In file included from workdir/UnpackedTarball/mysql-connector-cpp/driver/mysql_connection.cpp:44:
    > In file included from workdir/UnpackedTarball/mysql-connector-cpp/driver/mysql_util.h:30:
    > In file included from workdir/UnpackedTarball/mysql-connector-cpp/driver/nativeapi/mysql_private_iface.h:63:
    > workdir/UnpackedTarball/mariadb-connector-c/include/mysql.h:223:45: error: commas at the end of enumerator lists are a C++11 extension [-Werror,-Wc++11-extensions]
    >                       MYSQL_STATUS_QUIT_SENT, /* object is "destroyed" at this stage */
    >                                             ^
    
    (And otherwise the code appears to build fine with gb_CXX03FLAGS, so just stick
    with that instead of coming up with yet another way of compiling as >= C++11 and
    < C++17.)
    
    Change-Id: I924d906e34c073672f2038072743197d3f7fef5f
    Reviewed-on: https://gerrit.libreoffice.org/59368
    Tested-by: Jenkins
    Reviewed-by: Stephan Bergmann <sbergman at redhat.com>

diff --git a/external/mysql-connector-cpp/Library_mysqlcppconn.mk b/external/mysql-connector-cpp/Library_mysqlcppconn.mk
index 152aee8c0764..8efe63be8b05 100644
--- a/external/mysql-connector-cpp/Library_mysqlcppconn.mk
+++ b/external/mysql-connector-cpp/Library_mysqlcppconn.mk
@@ -32,6 +32,8 @@ $(eval $(call gb_Library_use_externals,mysqlcppconn,\
 endif
 endif
 
+$(eval $(call gb_Library_add_cxxflags,mysqlcppconn,$(filter-out -Werror=%,$(gb_CXX03FLAGS))))
+
 $(eval $(call gb_Library_set_external_code,mysqlcppconn))
 
 $(eval $(call gb_Library_set_warnings_not_errors,mysqlcppconn))
commit f0fcbcadac148a5bfd36b2a26795d45aef8eace4
Author:     Stephan Bergmann <sbergman at redhat.com>
AuthorDate: Mon Aug 20 20:20:22 2018 +0200
Commit:     Stephan Bergmann <sbergman at redhat.com>
CommitDate: Tue Aug 21 07:35:50 2018 +0200

    Make OUStringLiteral ctor actually constexpr
    
    ...which had accidentally been broken with
    87707670c993794ab12b0fad0f048f11429269c2 "Make OUStringLiteral more useful".
    (std::strlen unfortunately isn't constexpr, so need to use an explicit loop
    instead.)
    
    Change-Id: I9a820e2940b99a0c37124477810ef879d82c8325
    Reviewed-on: https://gerrit.libreoffice.org/59344
    Tested-by: Jenkins
    Reviewed-by: Stephan Bergmann <sbergman at redhat.com>

diff --git a/include/rtl/stringutils.hxx b/include/rtl/stringutils.hxx
index c6a5fcb64917..53f7554ee132 100644
--- a/include/rtl/stringutils.hxx
+++ b/include/rtl/stringutils.hxx
@@ -13,10 +13,13 @@
 #include "sal/config.h"
 
 #include <cstddef>
-#include <cstring>
 
 #include "sal/types.h"
 
+#if defined LIBO_INTERNAL_ONLY
+#include "config_global.h"
+#endif
+
 // The unittest uses slightly different code to help check that the proper
 // calls are made. The class is put into a different namespace to make
 // sure the compiler generates a different (if generating also non-inline)
@@ -165,8 +168,20 @@ struct ConstCharArrayDetector< const char[ N ], T >
     typedef T Type;
     static const std::size_t length = N - 1;
     static const bool ok = true;
-    static bool isValid(char const (& literal)[N])
-    { return std::strlen(literal) == length; }
+#if defined LIBO_INTERNAL_ONLY && HAVE_CXX14_CONSTEXPR
+    constexpr
+#endif
+    static bool isValid(char const (& literal)[N]) {
+        for (std::size_t i = 0; i != N - 1; ++i) {
+            if (literal[i] == '\0') {
+                return false;
+            }
+        }
+        return literal[N - 1] == '\0';
+    }
+#if defined LIBO_INTERNAL_ONLY
+    constexpr
+#endif
     static char const * toPointer(char const (& literal)[N]) { return literal; }
 };
 #if defined LIBO_INTERNAL_ONLY
diff --git a/sal/osl/unx/nlsupport.cxx b/sal/osl/unx/nlsupport.cxx
index e1d7e393822c..c9377040894a 100644
--- a/sal/osl/unx/nlsupport.cxx
+++ b/sal/osl/unx/nlsupport.cxx
@@ -20,6 +20,7 @@
 #include <sal/config.h>
 
 #include <algorithm>
+#include <cstring>
 
 #include <osl/nlsupport.h>
 #include <osl/diagnose.h>
diff --git a/sal/qa/rtl/strings/test_oustring_stringliterals.cxx b/sal/qa/rtl/strings/test_oustring_stringliterals.cxx
index 58a938ae9328..687f6b3e5146 100644
--- a/sal/qa/rtl/strings/test_oustring_stringliterals.cxx
+++ b/sal/qa/rtl/strings/test_oustring_stringliterals.cxx
@@ -41,6 +41,9 @@ private:
 
     void testcall( const char str[] );
 
+    // Check that OUStringLiteral ctor is actually constexpr:
+    static constexpr rtlunittest::OUStringLiteral dummy{"dummy"};
+
 CPPUNIT_TEST_SUITE(StringLiterals);
 CPPUNIT_TEST(checkCtors);
 CPPUNIT_TEST(checkUsage);


More information about the Libreoffice-commits mailing list