use final upstream merged fix for this boost issue

Change-Id: I33a347d3c0efc4a38389d525f3c9e5f41a957d47
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/172723
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
This commit is contained in:
Caolán McNamara 2024-09-01 14:40:46 +01:00
parent 883d19101e
commit d5c0423890
3 changed files with 48 additions and 13 deletions

View file

@ -0,0 +1,47 @@
From dfcb642a491f7ec2ae52e3e83d31bb6cdf3670c2 Mon Sep 17 00:00:00 2001
From: David Seifert <soap@gentoo.org>
Date: Sat, 31 Aug 2024 12:39:39 +0200
Subject: [PATCH] Fix boost 1.86 breakage
The fix does not break building against <1.86 since we're now accessing the
object representation of the return value.
Fixes #67
---
src/libcmis/xml-utils.cxx | 14 ++++++++++----
1 file changed, 10 insertions(+), 4 deletions(-)
diff --git a/src/libcmis/xml-utils.cxx b/src/libcmis/xml-utils.cxx
index e487d17..cdf088f 100644
--- a/src/libcmis/xml-utils.cxx
+++ b/src/libcmis/xml-utils.cxx
@@ -531,16 +531,22 @@ namespace libcmis
boost::uuids::detail::sha1 sha1;
sha1.process_bytes( str.c_str(), str.size() );
- unsigned int digest[5];
+ // on boost < 1.86.0, digest_type is typedef'd as unsigned int[5]
+ // on boost >= 1.86.0, digest_type is typedef'd as unsigned char[20]
+ boost::uuids::detail::sha1::digest_type digest;
sha1.get_digest( digest );
+ // by using a pointer to unsigned char, we can read the
+ // object representation of either typedef.
+ const unsigned char* ptr = reinterpret_cast<const unsigned char*>( digest );
+
stringstream out;
- // Setup writing mode. Every number must produce eight
+ // Setup writing mode. Every number must produce two
// hexadecimal digits, including possible leading 0s, or we get
// less than 40 digits as result.
out << hex << setfill('0') << right;
- for ( int i = 0; i < 5; ++i )
- out << setw(8) << digest[i];
+ for ( int i = 0; i < sizeof( digest ); ++ptr, ++i )
+ out << setw(2) << static_cast<int>( *ptr );
return out.str();
}
--
2.45.1

View file

@ -25,7 +25,7 @@ $(eval $(call gb_UnpackedTarball_add_patches,libcmis,\
external/libcmis/0001-cppcheck-operatorEqVarError-in-src-libcmis-http-sess.patch \
external/libcmis/0001-Take-into-account-m_CurlInitProtocolsFunction-in-cop.patch \
external/libcmis/initprotocols.patch.1 \
external/libcmis/boost-1.86.0.patch.1 \
external/libcmis/0001-Fix-boost-1.86-breakage.patch \
))
# vim: set noet sw=4 ts=4:

View file

@ -1,12 +0,0 @@
--- libcmis/src/libcmis/xml-utils.cxx 2024-08-22 12:06:16.595963754 +0200
+++ libcmis/src/libcmis/xml-utils.cxx 2024-08-22 12:06:29.987877405 +0200
@@ -536,7 +536,7 @@
sha1.process_bytes( str.c_str(), str.size() );
unsigned int digest[5];
- sha1.get_digest( digest );
+ sha1.get_digest( reinterpret_cast<boost::uuids::detail::sha1::digest_type&>(digest) );
stringstream out;
// Setup writing mode. Every number must produce eight