common : Migrate to placement_new from reinterpret casting
reinterpret_cast is prohibited by the C++ core guidelines because
it takes the behavior outside the language definition and gives
problems with type safety. Placement-new on the other-hand allows
to control the object storage while still properly instantiating
an object,keeping the behavior inside the C++ language
specification.
Change-Id: I9147096ac333b2ec02f137b19d13566cc0ede105
Signed-off-by: Pavithra Barithaya <pavithrabarithaya07@gmail.com>
diff --git a/common/utils.cpp b/common/utils.cpp
index 11ce064..59b5d23 100644
--- a/common/utils.cpp
+++ b/common/utils.cpp
@@ -48,16 +48,15 @@
record, &outData, &size);
if (record)
{
- auto pdr = reinterpret_cast<pldm_state_effecter_pdr*>(outData);
+ auto pdr = new (outData) pldm_state_effecter_pdr;
auto compositeEffecterCount = pdr->composite_effecter_count;
auto possible_states_start = pdr->possible_states;
for (auto effecters = 0x00; effecters < compositeEffecterCount;
effecters++)
{
- auto possibleStates =
- reinterpret_cast<state_effecter_possible_states*>(
- possible_states_start);
+ auto possibleStates = new (possible_states_start)
+ state_effecter_possible_states;
auto setId = possibleStates->state_set_id;
auto possibleStateSize =
possibleStates->possible_states_size;
@@ -100,16 +99,15 @@
record, &outData, &size);
if (record)
{
- auto pdr = reinterpret_cast<pldm_state_sensor_pdr*>(outData);
+ auto pdr = new (outData) pldm_state_sensor_pdr;
auto compositeSensorCount = pdr->composite_sensor_count;
auto possible_states_start = pdr->possible_states;
for (auto sensors = 0x00; sensors < compositeSensorCount;
sensors++)
{
- auto possibleStates =
- reinterpret_cast<state_sensor_possible_states*>(
- possible_states_start);
+ auto possibleStates = new (possible_states_start)
+ state_sensor_possible_states;
auto setId = possibleStates->state_set_id;
auto possibleStateSize =
possibleStates->possible_states_size;
@@ -496,16 +494,15 @@
record, &pdrData, &pdrSize);
if (record && (localOrRemote ^ pldm_pdr_record_is_remote(record)))
{
- auto pdr = reinterpret_cast<pldm_state_effecter_pdr*>(pdrData);
+ auto pdr = new (pdrData) pldm_state_effecter_pdr;
auto compositeEffecterCount = pdr->composite_effecter_count;
auto possible_states_start = pdr->possible_states;
for (auto effecters = 0x00; effecters < compositeEffecterCount;
effecters++)
{
- auto possibleStates =
- reinterpret_cast<state_effecter_possible_states*>(
- possible_states_start);
+ auto possibleStates = new (possible_states_start)
+ state_effecter_possible_states;
auto setId = possibleStates->state_set_id;
auto possibleStateSize = possibleStates->possible_states_size;
@@ -575,15 +572,14 @@
auto pdrs = findStateSensorPDR(tid, entityType, stateSetId, pdrRepo);
for (auto pdr : pdrs)
{
- auto sensorPdr = reinterpret_cast<pldm_state_sensor_pdr*>(pdr.data());
+ auto sensorPdr = new (pdr.data()) pldm_state_sensor_pdr;
auto compositeSensorCount = sensorPdr->composite_sensor_count;
auto possible_states_start = sensorPdr->possible_states;
for (auto sensors = 0x00; sensors < compositeSensorCount; sensors++)
{
- auto possibleStates =
- reinterpret_cast<state_sensor_possible_states*>(
- possible_states_start);
+ auto possibleStates = new (possible_states_start)
+ state_sensor_possible_states;
auto setId = possibleStates->state_set_id;
auto possibleStateSize = possibleStates->possible_states_size;
if (entityType == sensorPdr->entity_type &&