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