summaryrefslogtreecommitdiff
path: root/cpp/src/qpid/framing/SequenceNumberSet.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/qpid/framing/SequenceNumberSet.cpp')
-rw-r--r--cpp/src/qpid/framing/SequenceNumberSet.cpp16
1 files changed, 11 insertions, 5 deletions
diff --git a/cpp/src/qpid/framing/SequenceNumberSet.cpp b/cpp/src/qpid/framing/SequenceNumberSet.cpp
index b769befeb7..afab9033e5 100644
--- a/cpp/src/qpid/framing/SequenceNumberSet.cpp
+++ b/cpp/src/qpid/framing/SequenceNumberSet.cpp
@@ -48,14 +48,20 @@ SequenceNumberSet SequenceNumberSet::condense() const
{
SequenceNumberSet result;
const_iterator last = end();
+ const_iterator start = end();
for (const_iterator i = begin(); i != end(); i++) {
- if (last == end()) {
- last = i;
+ if (start == end()) {
+ start = i;
} else if (*i - *last > 1) {
- result.push_back(*last);
- result.push_back(*i);
- last = end();
+ result.push_back(*start);
+ result.push_back(*last);
+ start = i;
}
+ last = i;
+ }
+ if (start != end()) {
+ result.push_back(*start);
+ result.push_back(*last);
}
return result;
}