Apropos nothing, doesn't this leak memory?

```c++
  Buffer* child = write_head_->next_;
  if (child == write_head_ || child == read_head_)
    return;
  Buffer* cur = child->next_;
  if (cur == write_head_ || cur == read_head_)
    return;
```

child is not the read head or write head here and it isn't freed.

Maybe I don't have the right mental model of the ring buffer. What do child and child->next_ point to?