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