libpldmresponder : 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: If96afcb2c9dbea8fb6815d74a2181ca9ed04903a
Signed-off-by: Pavithra Barithaya <pavithrabarithaya07@gmail.com>
diff --git a/libpldmresponder/base.cpp b/libpldmresponder/base.cpp
index 2eae049..4a78ee8 100644
--- a/libpldmresponder/base.cpp
+++ b/libpldmresponder/base.cpp
@@ -79,7 +79,7 @@
}
Response response(sizeof(pldm_msg_hdr) + PLDM_GET_TYPES_RESP_BYTES, 0);
- auto responsePtr = reinterpret_cast<pldm_msg*>(response.data());
+ auto responsePtr = new (response.data()) pldm_msg;
auto rc = encode_get_types_resp(request->hdr.instance_id, PLDM_SUCCESS,
types.data(), responsePtr);
if (rc != PLDM_SUCCESS)
@@ -96,7 +96,7 @@
Type type;
Response response(sizeof(pldm_msg_hdr) + PLDM_GET_COMMANDS_RESP_BYTES, 0);
- auto responsePtr = reinterpret_cast<pldm_msg*>(response.data());
+ auto responsePtr = new (response.data()) pldm_msg;
auto rc = decode_get_commands_req(request, payloadLength, &type, &version);
@@ -138,7 +138,7 @@
uint8_t transferFlag;
Response response(sizeof(pldm_msg_hdr) + PLDM_GET_VERSION_RESP_BYTES, 0);
- auto responsePtr = reinterpret_cast<pldm_msg*>(response.data());
+ auto responsePtr = new (response.data()) pldm_msg;
uint8_t rc = decode_get_version_req(request, payloadLength, &transferHandle,
&transferFlag, &type);
@@ -179,7 +179,7 @@
Response Handler::getTID(const pldm_msg* request, size_t /*payloadLength*/)
{
Response response(sizeof(pldm_msg_hdr) + PLDM_GET_TID_RESP_BYTES, 0);
- auto responsePtr = reinterpret_cast<pldm_msg*>(response.data());
+ auto responsePtr = new (response.data()) pldm_msg;
auto rc = encode_get_tid_resp(request->hdr.instance_id, PLDM_SUCCESS,
TERMINUS_ID, responsePtr);
if (rc != PLDM_SUCCESS)