aboutsummaryrefslogtreecommitdiffstats
path: root/src/vmime/net/maildir/maildirUtils.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/vmime/net/maildir/maildirUtils.cpp')
-rw-r--r--src/vmime/net/maildir/maildirUtils.cpp19
1 files changed, 16 insertions, 3 deletions
diff --git a/src/vmime/net/maildir/maildirUtils.cpp b/src/vmime/net/maildir/maildirUtils.cpp
index 8c40f076..b31eb931 100644
--- a/src/vmime/net/maildir/maildirUtils.cpp
+++ b/src/vmime/net/maildir/maildirUtils.cpp
@@ -218,9 +218,18 @@ class maildirMessageSetEnumerator : public messageSetEnumerator
{
public:
+ maildirMessageSetEnumerator(const size_t msgCount)
+ : m_msgCount(msgCount)
+ {
+
+ }
+
void enumerateNumberMessageRange(const vmime::net::numberMessageRange& range)
{
- for (size_t i = range.getFirst(), last = range.getLast() ; i <= last ; ++i)
+ size_t last = range.getLast();
+ if (last == size_t(-1)) last = m_msgCount;
+
+ for (size_t i = range.getFirst() ; i <= last ; ++i)
list.push_back(i);
}
@@ -232,13 +241,17 @@ public:
public:
std::vector <size_t> list;
+
+private:
+
+ size_t m_msgCount;
};
// static
-const std::vector <size_t> maildirUtils::messageSetToNumberList(const messageSet& msgs)
+const std::vector <size_t> maildirUtils::messageSetToNumberList(const messageSet& msgs, const size_t msgCount)
{
- maildirMessageSetEnumerator en;
+ maildirMessageSetEnumerator en(msgCount);
msgs.enumerate(en);
return en.list;