aboutsummaryrefslogtreecommitdiffstats
path: root/src/messaging/imap/IMAPFolder.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/messaging/imap/IMAPFolder.cpp')
-rw-r--r--src/messaging/imap/IMAPFolder.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/messaging/imap/IMAPFolder.cpp b/src/messaging/imap/IMAPFolder.cpp
index c567c590..a63e8aa6 100644
--- a/src/messaging/imap/IMAPFolder.cpp
+++ b/src/messaging/imap/IMAPFolder.cpp
@@ -464,12 +464,17 @@ ref <message> IMAPFolder::getMessage(const int num)
std::vector <ref <message> > IMAPFolder::getMessages(const int from, const int to)
{
+ const int messageCount = getMessageCount();
+ const int to2 = (to == -1 ? messageCount : to);
+
if (!isOpen())
throw exceptions::illegal_state("Folder not open");
+ else if (to2 < from || from < 1 || to2 < 1 || from > messageCount || to2 > messageCount)
+ throw exceptions::message_not_found();
std::vector <ref <message> > v;
- for (int i = from ; i <= to ; ++i)
+ for (int i = from ; i <= to2 ; ++i)
v.push_back(vmime::create <IMAPMessage>(this, i));
return (v);