Skip to content

Commit 68c52cf

Browse files
committed
Apply suggestions from code review
Signed-off-by: JP Simard <[email protected]>
1 parent 869dbd2 commit 68c52cf

File tree

1 file changed

+4
-9
lines changed

1 file changed

+4
-9
lines changed

source/common/http/status.cc

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
#include "source/common/http/status.h"
22

33
#include "source/common/common/assert.h"
4-
#include "source/common/common/safe_memcpy.h"
54

65
#include "absl/strings/str_cat.h"
76

@@ -42,13 +41,11 @@ struct PrematureResponsePayload : public EnvoyStatusPayload {
4241
};
4342

4443
template <typename T> void storePayload(absl::Status& status, const T& payload) {
45-
const size_t payload_size = sizeof(payload);
46-
char* buffer = new char[payload_size];
47-
safeMemcpyUnsafeDst(buffer, &payload);
48-
absl::Cord cord(absl::string_view(buffer, payload_size));
44+
const T* allocated = new T(payload);
45+
const absl::string_view sv = absl::string_view(reinterpret_cast<const char*>(allocated), sizeof(allocated));
46+
absl::Cord cord = absl::MakeCordFromExternal(sv, [allocated]() { delete allocated; });
4947
cord.Flatten(); // Flatten ahead of time for easier access later.
5048
status.SetPayload(EnvoyPayloadUrl, std::move(cord));
51-
free(buffer);
5249
}
5350

5451
template <typename T = EnvoyStatusPayload> const T& getPayload(const absl::Status& status) {
@@ -62,9 +59,7 @@ template <typename T = EnvoyStatusPayload> const T& getPayload(const absl::Statu
6259
auto data = cord.TryFlat();
6360
ASSERT(data.has_value()); // EnvoyPayloadUrl cords are flattened ahead of time
6461
ASSERT(data.value().length() >= sizeof(T), "Invalid payload length");
65-
char* buffer = new char[sizeof(T)];
66-
memcpy(buffer, data.value().data(), sizeof(T)); // NOLINT(safe-memcpy)
67-
payload = reinterpret_cast<const T*>(buffer);
62+
payload = reinterpret_cast<const T*>(data.value().data());
6863
}
6964
});
7065
ASSERT(payload);

0 commit comments

Comments
 (0)