From 8c7f96e16492d4b05c0bcbf6fd6b39a2e4c24354 Mon Sep 17 00:00:00 2001 From: William Hicklin Date: Fri, 28 Jul 2023 16:40:19 +0100 Subject: [PATCH 1/2] Explicitly call the EndianPutSigned for signed integers. --- src/app/SafeAttributePersistenceProvider.h | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/app/SafeAttributePersistenceProvider.h b/src/app/SafeAttributePersistenceProvider.h index c6cba4e9f7135d..a22c0d52841f2e 100644 --- a/src/app/SafeAttributePersistenceProvider.h +++ b/src/app/SafeAttributePersistenceProvider.h @@ -54,7 +54,14 @@ class SafeAttributePersistenceProvider { uint8_t value[sizeof(T)]; auto w = Encoding::LittleEndian::BufferWriter(value, sizeof(T)); - w.EndianPut(uint64_t(aValue), sizeof(T)); + if (std::is_signed_v) + { + w.EndianPutSigned(aValue, sizeof(T)); + } + else + { + w.EndianPut(aValue, sizeof(T)); + } return SafeWriteValue(aPath, ByteSpan(value)); } @@ -76,7 +83,7 @@ class SafeAttributePersistenceProvider return err; } - chip::Encoding::LittleEndian::Reader r(tempVal.data(), tempVal.size()); + Encoding::LittleEndian::Reader r(tempVal.data(), tempVal.size()); r.RawReadLowLevelBeCareful(&aValue); return r.StatusCode(); } From e2549559bf20e0f57440f80286f689f6af65a43d Mon Sep 17 00:00:00 2001 From: William Hicklin Date: Fri, 4 Aug 2023 16:37:29 +0100 Subject: [PATCH 2/2] Added constexpr to compile for Android. --- src/app/SafeAttributePersistenceProvider.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/SafeAttributePersistenceProvider.h b/src/app/SafeAttributePersistenceProvider.h index a22c0d52841f2e..ed02d6039043ad 100644 --- a/src/app/SafeAttributePersistenceProvider.h +++ b/src/app/SafeAttributePersistenceProvider.h @@ -54,7 +54,7 @@ class SafeAttributePersistenceProvider { uint8_t value[sizeof(T)]; auto w = Encoding::LittleEndian::BufferWriter(value, sizeof(T)); - if (std::is_signed_v) + if constexpr (std::is_signed_v) { w.EndianPutSigned(aValue, sizeof(T)); }