Skip to content

Commit

Permalink
Fix static analysis warning in Serializable.cpp (#2385) (#2386)
Browse files Browse the repository at this point in the history
* Fix bug in Serializable.cpp (#2385)

* Modernize type name

* Update spelling
  • Loading branch information
bocchino authored Nov 28, 2023
1 parent c51d2ef commit d1d5860
Show file tree
Hide file tree
Showing 3 changed files with 37 additions and 1 deletion.
1 change: 1 addition & 0 deletions .github/actions/spelling/expect.txt
Original file line number Diff line number Diff line change
Expand Up @@ -785,6 +785,7 @@ ptf
pthread
ptmcg
pton
ptrt
puml
punc
pushd
Expand Down
8 changes: 7 additions & 1 deletion Fw/Types/Serializable.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -478,7 +478,13 @@ namespace Fw {
}

SerializeStatus SerializeBufferBase::deserialize(void*& val) {
return this->deserialize(reinterpret_cast<POINTER_CAST&>(val));
// Deserialize as pointer cast, then convert to void*
PlatformPointerCastType pointerCastVal = 0;
const SerializeStatus stat = this->deserialize(pointerCastVal);
if (stat == FW_SERIALIZE_OK) {
val = reinterpret_cast<void*>(pointerCastVal);
}
return stat;
}

SerializeStatus SerializeBufferBase::deserialize(F32 &val) {
Expand Down
29 changes: 29 additions & 0 deletions Fw/Types/test/ut/TypesTest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -369,6 +369,23 @@ TEST(SerializationTest,Serialization1) {
#if DEBUG_VERBOSE
printf("Val: in: %s out: %s stat1: %d stat2: %d\n",
boolt1 ? "TRUE" : "FALSE", boolt2 ? "TRUE" : "FALSE", stat1, stat2);
printf("Pointer Test\n");
#endif

U32 u32Var = 0;
void* ptrt1 = &u32Var;
void* ptrt2 = nullptr;

buff.resetSer();
stat1 = buff.serialize(ptrt1);
ASSERT_EQ(Fw::FW_SERIALIZE_OK,stat1);
stat2 = buff.deserialize(ptrt2);
ASSERT_EQ(Fw::FW_SERIALIZE_OK,stat2);
ASSERT_EQ(ptrt1,ptrt2);

#if DEBUG_VERBOSE
printf("Val: in: %p out: %p stat1: %d stat2: %d\n",
ptrt1, ptrt2, stat1, stat2);

printf("Skip deserialization Tests\n");
#endif
Expand Down Expand Up @@ -422,6 +439,7 @@ TEST(SerializationTest,Serialization1) {
f32t2 = 0.0;
f64t2 = 0.0;
boolt2 = false;
ptrt2 = nullptr;

buff.resetSer();
stat1 = buff.serialize(u8t1);
Expand All @@ -446,6 +464,8 @@ TEST(SerializationTest,Serialization1) {
ASSERT_EQ(Fw::FW_SERIALIZE_OK,stat1);
stat1 = buff.serialize(boolt1);
ASSERT_EQ(Fw::FW_SERIALIZE_OK,stat1);
stat1 = buff.serialize(ptrt1);
ASSERT_EQ(Fw::FW_SERIALIZE_OK,stat1);

// TKC - commented out due to fprime-util choking on output
// std::cout << "Buffer contents: " << buff << std::endl;
Expand Down Expand Up @@ -474,6 +494,8 @@ TEST(SerializationTest,Serialization1) {
ASSERT_EQ(Fw::FW_SERIALIZE_OK,stat1);
stat1 = buff2.serialize(boolt1);
ASSERT_EQ(Fw::FW_SERIALIZE_OK,stat1);
stat1 = buff2.serialize(ptrt1);
ASSERT_EQ(Fw::FW_SERIALIZE_OK,stat1);

ASSERT_EQ(buff,buff2);

Expand Down Expand Up @@ -512,6 +534,9 @@ TEST(SerializationTest,Serialization1) {
stat2 = buff.deserialize(boolt2);
ASSERT_EQ(Fw::FW_SERIALIZE_OK,stat2);
ASSERT_EQ(boolt1,boolt2);
stat2 = buff.deserialize(ptrt2);
ASSERT_EQ(Fw::FW_SERIALIZE_OK,stat2);
ASSERT_EQ(ptrt1,ptrt2);

// reset and deserialize again
#if DEBUG_VERBOSE
Expand All @@ -531,6 +556,7 @@ TEST(SerializationTest,Serialization1) {
f32t2 = 0.0;
f64t2 = 0.0;
boolt2 = false;
ptrt2 = nullptr;

stat2 = buff.deserialize(u8t2);
ASSERT_EQ(Fw::FW_SERIALIZE_OK,stat2);
Expand Down Expand Up @@ -565,6 +591,9 @@ TEST(SerializationTest,Serialization1) {
stat2 = buff.deserialize(boolt2);
ASSERT_EQ(Fw::FW_SERIALIZE_OK,stat2);
ASSERT_EQ(boolt1,boolt2);
stat2 = buff.deserialize(ptrt2);
ASSERT_EQ(Fw::FW_SERIALIZE_OK,stat2);
ASSERT_EQ(ptrt1,ptrt2);

// serialize string
Fw::String str1;
Expand Down

0 comments on commit d1d5860

Please sign in to comment.