Commit 1835607b authored by Michael Lippautz's avatar Michael Lippautz Committed by V8 LUCI CQ

cppgc: Fix new/delete mismatch in heap snapshot generation

Before this CL the C strings were generated using new char[] and
destroyed using delete. Fix this by avoiding a raw new[] call and
directly using unique_ptr.

Bug: chromium:1056170
Change-Id: I894171d58a3f7a765cdf86e07d3da2e9298a4a92
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2960275Reviewed-by: 's avatarOmer Katz <omerkatz@chromium.org>
Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#75147}
parent 79b61587
......@@ -63,10 +63,10 @@ class EmbedderNode : public v8::EmbedderGraph::Node {
// embedder until the snapshot is compiled.
const char* InternalizeEdgeName(std::string edge_name) {
const size_t edge_name_len = edge_name.length();
char* raw_edge_name_str = new char[edge_name_len + 1];
snprintf(raw_edge_name_str, edge_name_len + 1, "%s", edge_name.c_str());
named_edges_.emplace_back(raw_edge_name_str);
return named_edges_.back().get();
named_edges_.emplace_back(std::make_unique<char[]>(edge_name_len + 1));
char* named_edge_str = named_edges_.back().get();
snprintf(named_edge_str, edge_name_len + 1, "%s", edge_name.c_str());
return named_edge_str;
}
private:
......@@ -74,7 +74,7 @@ class EmbedderNode : public v8::EmbedderGraph::Node {
size_t size_;
Node* wrapper_node_ = nullptr;
Detachedness detachedness_ = Detachedness::kUnknown;
std::vector<std::unique_ptr<const char>> named_edges_;
std::vector<std::unique_ptr<char[]>> named_edges_;
};
// Node representing an artificial root group, e.g., set of Persistent handles.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment