1From d504abaf2b0a514193f52df42098bc16de4718b2 Mon Sep 17 00:00:00 2001 2From: Oz <rik20@live.it> 3Date: Fri, 17 Jan 2025 21:23:59 +0100 4Subject: [PATCH] Fix int8_t storage in BitPropVariant on Arm architectures 5 6Upstream-Status: Backport [https://github.com/rikyoz/bit7z/commit/d504abaf2b0a514193f52df42098bc16de4718b2] 7Signed-off-by: Peter Marko <peter.marko@siemens.com> 8--- 9 include/bit7z/bitwindows.hpp | 4 ++++ 10 src/bitpropvariant.cpp | 2 +- 11 2 files changed, 5 insertions(+), 1 deletion(-) 12 13diff --git a/include/bit7z/bitwindows.hpp b/include/bit7z/bitwindows.hpp 14index 5849b956..2f29a989 100644 15--- a/include/bit7z/bitwindows.hpp 16+++ b/include/bit7z/bitwindows.hpp 17@@ -126,7 +126,11 @@ struct PROPVARIANT { 18 WORD wReserved2; 19 WORD wReserved3; 20 union { 21+#if defined( __arm__ ) || defined( __aarch64__ ) 22+ signed char cVal; 23+#else 24 char cVal; 25+#endif 26 unsigned char bVal; 27 short iVal; 28 unsigned short uiVal; 29diff --git a/src/bitpropvariant.cpp b/src/bitpropvariant.cpp 30index 1e7f094f..642e1268 100644 31--- a/src/bitpropvariant.cpp 32+++ b/src/bitpropvariant.cpp 33@@ -157,7 +157,7 @@ BitPropVariant::BitPropVariant( uint64_t value ) noexcept: PROPVARIANT() { 34 BitPropVariant::BitPropVariant( int8_t value ) noexcept: PROPVARIANT() { 35 vt = VT_I1; 36 wReserved1 = 0; 37- cVal = static_cast< char >( value ); 38+ cVal = static_cast< decltype(cVal) >( value ); 39 } 40 41 BitPropVariant::BitPropVariant( int16_t value ) noexcept: PROPVARIANT() { 42