Skip to content

Commit

Permalink
Add a default constructor to seqset nodes.
Browse files Browse the repository at this point in the history
This allows them to exist as fields without invalidating the set.

This should make it possible to remove the undefined behaviour in the
creation of FrontendSlabMetadata, which is currently created via a
reinterpret_cast from a different-typed allocation.
FrontendSlabMetadata has a SeqSet::Node field that is in an unspecified
state on construction and which is valid only when inserted into a
SeqSet.
  • Loading branch information
davidchisnall committed Sep 18, 2023
1 parent 7b59733 commit 0a60ba8
Showing 1 changed file with 3 additions and 0 deletions.
3 changes: 3 additions & 0 deletions src/snmalloc/ds_core/seqset.h
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,9 @@ namespace snmalloc
constexpr Node(Node* next, Node* prev) : next(next), prev(prev) {}

public:
/// Default constructor, creates an invalid node.
constexpr Node() : Node(nullptr, nullptr) {}

void invariant()
{
SNMALLOC_ASSERT(next != nullptr);
Expand Down

0 comments on commit 0a60ba8

Please sign in to comment.