diff options
Diffstat (limited to 'base/linked_list.h')
-rw-r--r-- | base/linked_list.h | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/base/linked_list.h b/base/linked_list.h index 0626025..d91a1f8 100644 --- a/base/linked_list.h +++ b/base/linked_list.h @@ -126,6 +126,13 @@ class LinkNode { return static_cast<T*>(this); } + // Work around a Clang bug reported upstream: + // http://llvm.org/bugs/show_bug.cgi?id=7974 + // TODO(evanm): remove this and its sole caller. + void set(LinkNode<T>* prev, LinkNode<T>* next) { + previous_ = prev; next_ = next; + } + private: LinkNode<T>* previous_; LinkNode<T>* next_; @@ -137,7 +144,7 @@ class LinkedList { // The "root" node is self-referential, and forms the basis of a circular // list (root_.next() will point back to the start of the list, // and root_->previous() wraps around to the end of the list). - LinkedList() : root_(&root_, &root_) {} + LinkedList() { root_.set(&root_, &root_); } // Appends |e| to the end of the linked list. void Append(LinkNode<T>* e) { |