]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[2091b] simplified bitfield swap
authorJINMEI Tatuya <jinmei@isc.org>
Wed, 25 Jul 2012 17:26:21 +0000 (10:26 -0700)
committerJINMEI Tatuya <jinmei@isc.org>
Wed, 25 Jul 2012 17:26:21 +0000 (10:26 -0700)
src/lib/datasrc/rbtree.h

index c1a672c76ad96cff76f449d0696ec80b94daf83a..ab6523bb8c741f34e6a498365a4f608576c89223 100644 (file)
@@ -1638,16 +1638,13 @@ RBTree<T>::nodeFission(util::MemorySegment& mem_sgmt, RBNode<T>& node,
 
     std::swap(node.data_, down_node->data_);
 
-    // Swap flags bitfields; yes, this is ugly.  The right solution is to
-    // implement the above note regarding #2054, then we won't have to swap
-    // the flags in the first place.
-    struct {
-        uint32_t flags_ : 23;
-        uint32_t unused_ : 9;
-    } tmp;
-    tmp.flags_ = node.flags_;
+    // Swap flags bitfields; yes, this is ugly (it appears we cannot use
+    // std::swap for bitfields).  The right solution is to implement
+    // the above note regarding #2054, then we won't have to swap the
+    // flags in the first place.
+    const uint32_t tmp = node.flags_;
     node.flags_ = down_node->flags_;
-    down_node->flags_ = tmp.flags_;
+    down_node->flags_ = tmp;
 
     down_node->down_ = node.getDown();
     node.down_ = down_node;