Index: libstdc++-v3/include/bits/forward_list.tcc =================================================================== --- libstdc++-v3/include/bits/forward_list.tcc (revision 245686) +++ libstdc++-v3/include/bits/forward_list.tcc (working copy) @@ -451,20 +451,20 @@ __p = static_cast<_Node*>(__p->_M_next); --__psize; } - else if (__comp(*__p->_M_valptr(), *__q->_M_valptr())) + else if (__comp(*__q->_M_valptr(), *__p->_M_valptr())) { + // First node of q is lower; e must come from q. + __e = __q; + __q = static_cast<_Node*>(__q->_M_next); + --__qsize; + } + else + { // First node of p is lower; e must come from p. __e = __p; __p = static_cast<_Node*>(__p->_M_next); --__psize; } - else - { - // First node of q is lower; e must come from q. - __e = __q; - __q = static_cast<_Node*>(__q->_M_next); - --__qsize; - } // Add the next node to the merged list. if (__tail)