diff --git a/src/sbbs3/readmail.cpp b/src/sbbs3/readmail.cpp index 6e966e988166409fc066f1226e85a8f94e08abf4..5b0f2328efc05c57e2268f7c56647de00590d6f5 100644 --- a/src/sbbs3/readmail.cpp +++ b/src/sbbs3/readmail.cpp @@ -229,12 +229,16 @@ void sbbs_t::readmail(uint usernumber, int which) mail=loadmail(&smb,&smb.msgs,usernumber,which,lm_mode); /* So re-load */ if(!smb.msgs) break; + if(lm_mode != last_mode) + smb.curmsg = 0; + else { + for(smb.curmsg=0;smb.curmsg<smb.msgs;smb.curmsg++) + if(mail[smb.curmsg].number==msg.idx.number) + break; + if(smb.curmsg>=smb.msgs) + smb.curmsg=(smb.msgs-1); + } last_mode = lm_mode; - for(smb.curmsg=0;smb.curmsg<smb.msgs;smb.curmsg++) - if(mail[smb.curmsg].number==msg.idx.number) - break; - if(smb.curmsg>=smb.msgs) - smb.curmsg=(smb.msgs-1); continue; } @@ -764,12 +768,12 @@ void sbbs_t::readmail(uint usernumber, int which) case 'V': /* View SPAM (toggle) */ { domsg = false; - int spam = getmail(&cfg, usernumber, /* Sent: */FALSE, /* SPAM-ONLY */TRUE); + int spam = getmail(&cfg, usernumber, /* Sent: */FALSE, /* attr: */MSG_SPAM); if(!spam) { bprintf(text[NoMailWaiting], "SPAM"); break; } - if(spam >= getmail(&cfg, usernumber, /* Sent: */FALSE, /* SPAM-ONLY */FALSE)) { + if(spam >= getmail(&cfg, usernumber, /* Sent: */FALSE, /* attr: */0)) { bprintf(text[NoMailWaiting], "HAM"); break; }