summaryrefslogtreecommitdiffstats
path: root/base/linked_list.h
diff options
context:
space:
mode:
Diffstat (limited to 'base/linked_list.h')
-rw-r--r--base/linked_list.h9
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) {