bug-lib-gplusplus
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

improper STL list sort iterator invalidation


From: Andy Sloane
Subject: improper STL list sort iterator invalidation
Date: Mon, 25 Nov 2002 17:14:33 -0600
User-agent: Mutt/1.3.25i

Hi there,

I'm not sure if this address is still valid, but we've found a bug, or what
we believe to be a bug, in the libg++ standard template library involving
list<T>::sort().

Test code:

#include <stdio.h>
#include <list>

int main()
{
        list<int> x;
        list<int>::iterator i;
        x.push_back(5);
        x.push_back(1);
        x.push_back(3);
        x.push_back(2);
        i = x.end();
        x.sort();
        if(i == x.end()) printf("i is at the end()\n");
        else printf("i is not at the end()\n");
}

Proper output is "i is at the end()", but on Red Hat Linux gcc 2.96, and
Mac OS X gcc 1151 ("based on version 3.1"), i is not at the end() after the
sort().

The problem is that sort() invalidates an iterator pointing to the end,
when the STL spec, or at least SGI's STL documentation, says it won't
invalidate any of them.

I have no idea whether this was fixed in the recent gcc 3.2.1 release, but
I just wanted to be sure someone was aware of it.

-Andy





reply via email to

[Prev in Thread] Current Thread [Next in Thread]