Skip to content

Commit d1d5860

Browse files
authored
Fix static analysis warning in Serializable.cpp (#2385) (#2386)
* Fix bug in Serializable.cpp (#2385) * Modernize type name * Update spelling
1 parent c51d2ef commit d1d5860

File tree

3 files changed

+37
-1
lines changed

3 files changed

+37
-1
lines changed

.github/actions/spelling/expect.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -785,6 +785,7 @@ ptf
785785
pthread
786786
ptmcg
787787
pton
788+
ptrt
788789
puml
789790
punc
790791
pushd

Fw/Types/Serializable.cpp

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -478,7 +478,13 @@ namespace Fw {
478478
}
479479

480480
SerializeStatus SerializeBufferBase::deserialize(void*& val) {
481-
return this->deserialize(reinterpret_cast<POINTER_CAST&>(val));
481+
// Deserialize as pointer cast, then convert to void*
482+
PlatformPointerCastType pointerCastVal = 0;
483+
const SerializeStatus stat = this->deserialize(pointerCastVal);
484+
if (stat == FW_SERIALIZE_OK) {
485+
val = reinterpret_cast<void*>(pointerCastVal);
486+
}
487+
return stat;
482488
}
483489

484490
SerializeStatus SerializeBufferBase::deserialize(F32 &val) {

Fw/Types/test/ut/TypesTest.cpp

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -369,6 +369,23 @@ TEST(SerializationTest,Serialization1) {
369369
#if DEBUG_VERBOSE
370370
printf("Val: in: %s out: %s stat1: %d stat2: %d\n",
371371
boolt1 ? "TRUE" : "FALSE", boolt2 ? "TRUE" : "FALSE", stat1, stat2);
372+
printf("Pointer Test\n");
373+
#endif
374+
375+
U32 u32Var = 0;
376+
void* ptrt1 = &u32Var;
377+
void* ptrt2 = nullptr;
378+
379+
buff.resetSer();
380+
stat1 = buff.serialize(ptrt1);
381+
ASSERT_EQ(Fw::FW_SERIALIZE_OK,stat1);
382+
stat2 = buff.deserialize(ptrt2);
383+
ASSERT_EQ(Fw::FW_SERIALIZE_OK,stat2);
384+
ASSERT_EQ(ptrt1,ptrt2);
385+
386+
#if DEBUG_VERBOSE
387+
printf("Val: in: %p out: %p stat1: %d stat2: %d\n",
388+
ptrt1, ptrt2, stat1, stat2);
372389

373390
printf("Skip deserialization Tests\n");
374391
#endif
@@ -422,6 +439,7 @@ TEST(SerializationTest,Serialization1) {
422439
f32t2 = 0.0;
423440
f64t2 = 0.0;
424441
boolt2 = false;
442+
ptrt2 = nullptr;
425443

426444
buff.resetSer();
427445
stat1 = buff.serialize(u8t1);
@@ -446,6 +464,8 @@ TEST(SerializationTest,Serialization1) {
446464
ASSERT_EQ(Fw::FW_SERIALIZE_OK,stat1);
447465
stat1 = buff.serialize(boolt1);
448466
ASSERT_EQ(Fw::FW_SERIALIZE_OK,stat1);
467+
stat1 = buff.serialize(ptrt1);
468+
ASSERT_EQ(Fw::FW_SERIALIZE_OK,stat1);
449469

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

478500
ASSERT_EQ(buff,buff2);
479501

@@ -512,6 +534,9 @@ TEST(SerializationTest,Serialization1) {
512534
stat2 = buff.deserialize(boolt2);
513535
ASSERT_EQ(Fw::FW_SERIALIZE_OK,stat2);
514536
ASSERT_EQ(boolt1,boolt2);
537+
stat2 = buff.deserialize(ptrt2);
538+
ASSERT_EQ(Fw::FW_SERIALIZE_OK,stat2);
539+
ASSERT_EQ(ptrt1,ptrt2);
515540

516541
// reset and deserialize again
517542
#if DEBUG_VERBOSE
@@ -531,6 +556,7 @@ TEST(SerializationTest,Serialization1) {
531556
f32t2 = 0.0;
532557
f64t2 = 0.0;
533558
boolt2 = false;
559+
ptrt2 = nullptr;
534560

535561
stat2 = buff.deserialize(u8t2);
536562
ASSERT_EQ(Fw::FW_SERIALIZE_OK,stat2);
@@ -565,6 +591,9 @@ TEST(SerializationTest,Serialization1) {
565591
stat2 = buff.deserialize(boolt2);
566592
ASSERT_EQ(Fw::FW_SERIALIZE_OK,stat2);
567593
ASSERT_EQ(boolt1,boolt2);
594+
stat2 = buff.deserialize(ptrt2);
595+
ASSERT_EQ(Fw::FW_SERIALIZE_OK,stat2);
596+
ASSERT_EQ(ptrt1,ptrt2);
568597

569598
// serialize string
570599
Fw::String str1;

0 commit comments

Comments
 (0)