From c68ebe151653dabf207f2ec9681449ad812a34f6 Mon Sep 17 00:00:00 2001 From: Damien Caliste Date: Tue, 4 Sep 2018 17:08:58 +0200 Subject: Insert status as QUINT64 in mailmessages database, not int SQlite is storing signed 64bit integers. With the static_cast, the value is truncated. It is not necessary to cast the value as a qint64 neither since the sign-bit is not used anyway to store a flag (there are maximum 63 flags). Change-Id: Ia2a093ec2e14fe1ee8222cb01ce1b42fafcb90af Reviewed-by: Pekka Vuorela --- src/libraries/qmfclient/qmailstore_p.cpp | 2 +- tests/tst_qmailstore/tst_qmailstore.cpp | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/libraries/qmfclient/qmailstore_p.cpp b/src/libraries/qmfclient/qmailstore_p.cpp index 9c86837d..b32f7115 100644 --- a/src/libraries/qmfclient/qmailstore_p.cpp +++ b/src/libraries/qmfclient/qmailstore_p.cpp @@ -5989,7 +5989,7 @@ QMailStorePrivate::AttemptResult QMailStorePrivate::attemptAddMessage(QMailMessa values.insert(QLatin1String("recipients"), recipients.join(QLatin1String(","))); values.insert(QLatin1String("subject"), metaData->subject()); values.insert(QLatin1String("stamp"), QMailTimeStamp(metaData->date()).toUTC()); - values.insert(QLatin1String("status"), static_cast(metaData->status())); + values.insert(QLatin1String("status"), metaData->status()); values.insert(QLatin1String("parentaccountid"), metaData->parentAccountId().toULongLong()); values.insert(QLatin1String("mailfile"), ::contentUri(*metaData)); values.insert(QLatin1String("serveruid"), metaData->serverUid()); diff --git a/tests/tst_qmailstore/tst_qmailstore.cpp b/tests/tst_qmailstore/tst_qmailstore.cpp index 363a34e2..176a9cfd 100644 --- a/tests/tst_qmailstore/tst_qmailstore.cpp +++ b/tests/tst_qmailstore/tst_qmailstore.cpp @@ -368,6 +368,8 @@ void tst_QMailStore::addMessage() message1.setBody(QMailMessageBody::fromData(QString("Hi"), QMailMessageContentType("text/plain"), QMailMessageBody::SevenBit)); message1.setStatus(QMailMessage::Incoming, true); message1.setStatus(QMailMessage::Read, true); + // Add a fictitious large flag value to check that quint64 is preserved. + message1.setStatus(quint64(1) << 62, true); message1.setCustomField("question", "What is your dog's name?"); message1.setCustomField("answer", "Fido"); -- cgit v1.2.3