external/firebird/UnpackedTarball_firebird.mk |    1 +
 external/firebird/c++26.patch                 |   11 +++++++++++
 2 files changed, 12 insertions(+)

New commits:
commit b89c84bf3b01a8ed7314803db34adb20b6f909e1
Author:     Stephan Bergmann <stephan.bergm...@allotropia.de>
AuthorDate: Wed Jan 17 21:16:16 2024 +0100
Commit:     Stephan Bergmann <stephan.bergm...@allotropia.de>
CommitDate: Thu Jan 18 08:10:37 2024 +0100

    external/firebird: Adapt to C++26
    
    ...as seen failing with --with-latest-c++ and recent Clang 18 trunk,
    
    In file included from 
workdir/UnpackedTarball/firebird/src/jrd/Collation.cpp:105:
    > 
workdir/UnpackedTarball/firebird/src/jrd/../jrd/SimilarToMatcher.h:1462:11: 
error: invalid bitwise operation between different enumeration types ('const 
Op' and 'MatchState')
    >  1462 |                 switch (ENCODE_OP_STATE(node->op, state))
    >       |                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    > 
workdir/UnpackedTarball/firebird/src/jrd/../jrd/SimilarToMatcher.h:1458:42: 
note: expanded from macro 'ENCODE_OP_STATE'
    >  1458 | #define ENCODE_OP_STATE(op, state) ((op) | (state))
    >       |                                     ~~~~ ^ ~~~~~~~
    > workdir/UnpackedTarball/firebird/src/jrd/../jrd/SimilarToMatcher.h:561:3: 
note: in instantiation of member function 'Firebird::SimilarToMatcher<unsigned 
char>::Evaluator::match' requested here
    >   561 |                 match();
    >       |                 ^
    > 
workdir/UnpackedTarball/firebird/src/jrd/../jrd/SimilarToMatcher.h:462:20: 
note: in instantiation of member function 'Firebird::SimilarToMatcher<unsigned 
char>::Evaluator::getResult' requested here
    >   462 |                 return evaluator.getResult();
    >       |                                  ^
    > workdir/UnpackedTarball/firebird/src/jrd/Collation.cpp:787:29: note: in 
instantiation of member function 'Firebird::SimilarToMatcher<unsigned 
char>::evaluate' requested here
    >   787 |                 return pSimilarToMatcher::evaluate(pool, this, s, 
sl, p, pl, escape, escapeLen);
    >       |                                           ^
    > workdir/UnpackedTarball/firebird/src/jrd/Collation.cpp:736:2: note: in 
instantiation of member function '(anonymous 
namespace)::CollationImpl<(anonymous namespace)::StartsMatcher<unsigned char, 
Jrd::NullStrConverter>, (anonymous namespace)::ContainsMatcher<unsigned char, 
Jrd::UpcaseConverter<>>, (anonymous namespace)::LikeMatcher<unsigned char>, 
Firebird::SimilarToMatcher<unsigned char>, 
Firebird::SubstringSimilarMatcher<unsigned char>, (anonymous 
namespace)::MatchesMatcher<unsigned char>, (anonymous 
namespace)::SleuthMatcher<unsigned char>>::similarTo' requested here
    >   736 |         CollationImpl(TTYPE_ID a_type, texttype* a_tt, CharSet* 
a_cs)
    >       |         ^
    > workdir/UnpackedTarball/firebird/src/jrd/Collation.cpp:843:28: note: in 
instantiation of member function '(anonymous 
namespace)::CollationImpl<(anonymous namespace)::StartsMatcher<unsigned char, 
Jrd::NullStrConverter>, (anonymous namespace)::ContainsMatcher<unsigned char, 
Jrd::UpcaseConverter<>>, (anonymous namespace)::LikeMatcher<unsigned char>, 
Firebird::SimilarToMatcher<unsigned char>, 
Firebird::SubstringSimilarMatcher<unsigned char>, (anonymous 
namespace)::MatchesMatcher<unsigned char>, (anonymous 
namespace)::SleuthMatcher<unsigned char>>::CollationImpl' requested here
    >   843 |                 return FB_NEW_POOL(pool) DirectImpl(id, tt, cs);
    >       |                                          ^
    > workdir/UnpackedTarball/firebird/src/jrd/Collation.cpp:862:11: note: in 
instantiation of function template specialization '(anonymous 
namespace)::newCollation<unsigned char>' requested here
    >   862 |                         return newCollation<UCHAR>(pool, id, tt, 
cs);
    >       |                                ^
    
    Change-Id: I0af4752b04020e978ea4b339ff21688302c63ef6
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/162230
    Tested-by: Jenkins
    Reviewed-by: Stephan Bergmann <stephan.bergm...@allotropia.de>

diff --git a/external/firebird/UnpackedTarball_firebird.mk 
b/external/firebird/UnpackedTarball_firebird.mk
index b5e7c64f12f8..84b82de8b906 100644
--- a/external/firebird/UnpackedTarball_firebird.mk
+++ b/external/firebird/UnpackedTarball_firebird.mk
@@ -47,6 +47,7 @@ $(eval $(call gb_UnpackedTarball_add_patches,firebird,\
     external/firebird/Wincompatible-function-pointer-types.patch \
        
external/firebird/0001-Revert-Backported-fix-for-7122-Invalid-state-of-mapp.patch.1
 \
        external/firebird/mold.patch \
+    external/firebird/c++26.patch \
 ))
 
 ifeq ($(OS),WNT)
diff --git a/external/firebird/c++26.patch b/external/firebird/c++26.patch
new file mode 100644
index 000000000000..e3ffe61b4f03
--- /dev/null
+++ b/external/firebird/c++26.patch
@@ -0,0 +1,11 @@
+--- src/jrd/SimilarToMatcher.h
++++ src/jrd/SimilarToMatcher.h
+@@ -1455,7 +1455,7 @@
+               gds__log("%d, %s", state, debugText.c_str());
+ #endif
+ 
+-#define ENCODE_OP_STATE(op, state) ((op) | (state))
++#define ENCODE_OP_STATE(op, state) (+(op) | (state))
+ 
+               // Go directly to op and state with a single switch.
+ 

Reply via email to