diff --git a/kmacctlocal.cpp b/kmacctlocal.cpp index cd2862231..82c8a4934 100644 --- a/kmacctlocal.cpp +++ b/kmacctlocal.cpp @@ -223,13 +223,10 @@ bool KMAcctLocal::fetchMsg() #endif msg->setStatus( msg->headerField( "Status" ).latin1(), msg->headerField( "X-Status" ).latin1()); - // FIXME Empty headers give a QString with size == 0 which results in an assertion - // in QString::at() because of Q_ASSERT(i >= 0 && i < size()) although - // size == 0 should return '\0' as described in QString::size() documentation - // If it's no bug in qt-copy, then we have to check for the size ourself. - // At least, commenting the next two lines lets you receive mail from a local acocunt! - //msg->setEncryptionStateChar( msg->headerField( "X-KMail-EncryptionState" ).at(0) ); - //msg->setSignatureStateChar( msg->headerField( "X-KMail-SignatureState" ).at(0)); + if ( msg->headerField( "X-KMail-EncryptionState" ).size() ) + msg->setEncryptionStateChar( msg->headerField( "X-KMail-EncryptionState" ).at(0) ); + if ( msg->headerField( "X-KMail-SignatureState" ).size() ) + msg->setSignatureStateChar( msg->headerField( "X-KMail-SignatureState" ).at(0)); msg->setComplete(true); msg->updateAttachmentState(); diff --git a/kmacctmaildir.cpp b/kmacctmaildir.cpp index def853f5b..c805a6219 100644 --- a/kmacctmaildir.cpp +++ b/kmacctmaildir.cpp @@ -168,9 +168,11 @@ void KMAcctMaildir::processNewMail(bool) if (msg) { msg->setStatus(msg->headerField("Status").latin1(), - msg->headerField("X-Status").latin1()); - msg->setEncryptionStateChar( msg->headerField( "X-KMail-EncryptionState" ).at(0)); - msg->setSignatureStateChar( msg->headerField( "X-KMail-SignatureState" ).at(0)); + msg->headerField("X-Status").latin1()); + if ( msg->headerField( "X-KMail-EncryptionState" ).size() ) + msg->setEncryptionStateChar( msg->headerField( "X-KMail-EncryptionState" ).at(0) ); + if ( msg->headerField( "X-KMail-SignatureState" ).size() ) + msg->setSignatureStateChar( msg->headerField( "X-KMail-SignatureState" ).at(0)); addedOk = processNewMsg(msg); if (addedOk) diff --git a/kmmessage.cpp b/kmmessage.cpp index 156d18d35..4448fd47d 100644 --- a/kmmessage.cpp +++ b/kmmessage.cpp @@ -405,9 +405,12 @@ void KMMessage::fromDwString(const DwString& str, bool aSetStatus) if (aSetStatus) { setStatus(headerField("Status").latin1(), headerField("X-Status").latin1()); - setEncryptionStateChar( headerField("X-KMail-EncryptionState").at(0) ); - setSignatureStateChar( headerField("X-KMail-SignatureState").at(0) ); - setMDNSentState( static_cast( headerField("X-KMail-MDN-Sent").at(0).latin1() ) ); + if ( headerField( "X-KMail-EncryptionState" ).size() ) + setEncryptionStateChar( headerField( "X-KMail-EncryptionState" ).at(0) ); + if ( headerField( "X-KMail-SignatureState" ).size() ) + setSignatureStateChar( headerField( "X-KMail-SignatureState" ).at(0)); + if ( headerField("X-KMail-MDN-Sent").size() ) + setMDNSentState( static_cast( headerField("X-KMail-MDN-Sent").at(0).latin1() ) ); } if (attachmentState() == KMMsgAttachmentUnknown && readyToShow()) updateAttachmentState();