diff --git a/src/app/SafeAttributePersistenceProvider.h b/src/app/SafeAttributePersistenceProvider.h index c6cba4e9f7135d..ed02d6039043ad 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 constexpr (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(); }