Fix GLIBCXX_DEBUG error of comparing two singular iterators

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41139 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
David Greene 2007-08-17 15:13:55 +00:00
parent be3e419280
commit fd273b6ed5

View File

@ -164,12 +164,14 @@ private:
NodeInfo *NI; // Node info
NIIterator NGI; // Node group iterator
NIIterator NGE; // Node group iterator end
bool iter_valid;
public:
// Ctor.
NodeGroupIterator(NodeInfo *N) : NI(N) {
NodeGroupIterator(NodeInfo *N) : NI(N), iter_valid(false) {
// If the node is in a group then set up the group iterator. Otherwise
// the group iterators will trip first time out.
assert(N && "Bad node info");
if (N->isInGroup()) {
// get Group
NodeGroup *Group = NI->Group;
@ -177,14 +179,17 @@ public:
NGE = Group->group_end();
// Prevent this node from being used (will be in members list
NI = NULL;
iter_valid = true;
}
}
/// next - Return the next node info, otherwise NULL.
///
NodeInfo *next() {
// If members list
if (NGI != NGE) return *NGI++;
if (iter_valid) {
// If members list
if (NGI != NGE) return *NGI++;
}
// Use node as the result (may be NULL)
NodeInfo *Result = NI;
// Only use once