Hello community, here is the log from the commit of package kdepimlibs4 for openSUSE:Factory checked in at Fri Aug 12 09:39:30 CEST 2011. -------- --- KDE/kdepimlibs4/kdepimlibs4.changes 2011-08-04 10:53:40.000000000 +0200 +++ /mounts/work_src_done/STABLE/kdepimlibs4/kdepimlibs4.changes 2011-08-11 15:59:26.000000000 +0200 @@ -1,0 +2,8 @@ +Thu Aug 11 13:58:30 UTC 2011 - idonmez@novell.com + +- Refresh kdepimlibs-4.7-branch.patch + * Fix an IMAP crash + * Fix addressbook barcodes when the entry has a photo + * Better error checking + +------------------------------------------------------------------- calling whatdependson for head-i586 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ kdepimlibs4.spec ++++++ --- /var/tmp/diff_new_pack.NNpu7O/_old 2011-08-12 09:32:27.000000000 +0200 +++ /var/tmp/diff_new_pack.NNpu7O/_new 2011-08-12 09:32:27.000000000 +0200 @@ -19,7 +19,7 @@ Name: kdepimlibs4 Version: 4.7.0 -Release: 2 +Release: 4 License: LGPLv2.1+ Summary: KDE PIM Libraries Url: http://www.kde.org ++++++ kdepimlibs-4.7-branch.patch ++++++ --- /var/tmp/diff_new_pack.NNpu7O/_old 2011-08-12 09:32:27.000000000 +0200 +++ /var/tmp/diff_new_pack.NNpu7O/_new 2011-08-12 09:32:27.000000000 +0200 @@ -1,3 +1,181 @@ +diff --git a/akonadi/changerecorder_p.h b/akonadi/changerecorder_p.h +index 4314b40..75e0ca0 100644 +--- a/akonadi/changerecorder_p.h ++++ b/akonadi/changerecorder_p.h +@@ -165,13 +165,13 @@ class AKONADI_TESTS_EXPORT Akonadi::ChangeRecorderPrivate : public Akonadi::Moni + void addToStream( QDataStream &stream, const NotificationMessage &msg ) + { + stream << msg.sessionId(); +- stream << msg.type(); +- stream << msg.operation(); +- stream << msg.uid(); ++ stream << int(msg.type()); ++ stream << int(msg.operation()); ++ stream << qulonglong(msg.uid()); + stream << msg.remoteId(); + stream << msg.resource(); +- stream << msg.parentCollection(); +- stream << msg.parentDestCollection(); ++ stream << qulonglong(msg.parentCollection()); ++ stream << qulonglong(msg.parentDestCollection()); + stream << msg.mimeType(); + stream << msg.itemParts(); + } +diff --git a/akonadi/contact/contactviewer.cpp b/akonadi/contact/contactviewer.cpp +index 9b0469b..58e1598 100644 +--- a/akonadi/contact/contactviewer.cpp ++++ b/akonadi/contact/contactviewer.cpp +@@ -93,8 +93,12 @@ class ContactViewer::Private + KIcon( QLatin1String( "document-open-remote" ) ).pixmap( QSize( 16, 16 ) ) ); + + #ifdef HAVE_PRISON ++ { + KABC::VCardConverter converter; +- const QString data = QString::fromUtf8( converter.createVCard( mCurrentContact ) ); ++ KABC::Addressee addr(mCurrentContact); ++ addr.setPhoto(KABC::Picture()); ++ addr.setLogo(KABC::Picture()); ++ const QString data = QString::fromUtf8( converter.createVCard( addr ) ); + mQRCode->setData( data ); + mDataMatrix->setData( data ); + mBrowser->document()->addResource( QTextDocument::ImageResource, +@@ -103,6 +107,7 @@ class ContactViewer::Private + mBrowser->document()->addResource( QTextDocument::ImageResource, + QUrl( QLatin1String( "datamatrix" ) ), + mDataMatrix->toImage( QSizeF(50,50) ) ); ++ } + #endif // HAVE_PRISON + + // merge local and global custom field descriptions +diff --git a/akonadi/resourcescheduler.cpp b/akonadi/resourcescheduler.cpp +index b29bfc5..7c9e5be 100644 +--- a/akonadi/resourcescheduler.cpp ++++ b/akonadi/resourcescheduler.cpp +@@ -456,6 +456,7 @@ static const char s_taskTypes[][25] = { + "SyncAll", + "SyncCollectionTree", + "SyncCollection", ++ "SyncCollectionAttributes", + "FetchItem", + "ChangeReplay", + "DeleteResourceCollection", +@@ -467,7 +468,7 @@ QDebug Akonadi::operator<<( QDebug d, const ResourceScheduler::Task& task ) + { + d << task.serial << s_taskTypes[task.type]; + if ( task.type != ResourceScheduler::Invalid ) { +- if ( task.collection.id() != -1 ) ++ if ( task.collection.isValid() ) + d << "collection" << task.collection.id(); + if ( task.item.id() != -1 ) + d << "item" << task.item.id(); +diff --git a/akonadi/resourcescheduler_p.h b/akonadi/resourcescheduler_p.h +index 3ee72e7..fa76db2 100644 +--- a/akonadi/resourcescheduler_p.h ++++ b/akonadi/resourcescheduler_p.h +@@ -45,6 +45,7 @@ class ResourceScheduler : public QObject + Q_OBJECT + + public: ++ // If you change this enum, keep s_taskTypes in sync in resourcescheduler.cpp + enum TaskType { + Invalid, + SyncAll, +diff --git a/kcal/filestorage.cpp b/kcal/filestorage.cpp +index 7525bd8..e9c5947 100644 +--- a/kcal/filestorage.cpp ++++ b/kcal/filestorage.cpp +@@ -109,22 +109,27 @@ bool FileStorage::load() + // Always try to load with iCalendar. It will detect, if it is actually a + // vCalendar file. + bool success; ++ QString productId; + // First try the supplied format. Otherwise fall through to iCalendar, then + // to vCalendar + success = saveFormat() && saveFormat()->load( calendar(), d->mFileName ); +- if ( !success ) { ++ if ( success ) { ++ productId = saveFormat()->loadedProductId(); ++ } else { + ICalFormat iCal; + + success = iCal.load( calendar(), d->mFileName ); + +- if ( !success ) { ++ if ( success ) { ++ productId = iCal.loadedProductId(); ++ } else { + if ( iCal.exception() ) { + if ( iCal.exception()->errorCode() == ErrorFormat::CalVersion1 ) { + // Expected non vCalendar file, but detected vCalendar + kDebug() << "Fallback to VCalFormat"; + VCalFormat vCal; + success = vCal.load( calendar(), d->mFileName ); +- calendar()->setProductId( vCal.productId() ); ++ productId = vCal.loadedProductId(); + } else { + return false; + } +@@ -132,11 +137,10 @@ bool FileStorage::load() + kDebug() << "Warning! There should be an exception set."; + return false; + } +- } else { +- calendar()->setProductId( iCal.loadedProductId() ); + } + } + ++ calendar()->setProductId( productId ); + calendar()->setModified( false ); + + return true; +diff --git a/kcalcore/filestorage.cpp b/kcalcore/filestorage.cpp +index aa0558a..13b7c6e 100644 +--- a/kcalcore/filestorage.cpp ++++ b/kcalcore/filestorage.cpp +@@ -105,22 +105,27 @@ bool FileStorage::load() + // Always try to load with iCalendar. It will detect, if it is actually a + // vCalendar file. + bool success; ++ QString productId; + // First try the supplied format. Otherwise fall through to iCalendar, then + // to vCalendar + success = saveFormat() && saveFormat()->load( calendar(), d->mFileName ); +- if ( !success ) { ++ if ( success ) { ++ productId = saveFormat()->loadedProductId(); ++ } else { + ICalFormat iCal; + + success = iCal.load( calendar(), d->mFileName ); + +- if ( !success ) { ++ if ( success ) { ++ productId = iCal.loadedProductId(); ++ } else { + if ( iCal.exception() ) { + if ( iCal.exception()->code() == Exception::CalVersion1 ) { + // Expected non vCalendar file, but detected vCalendar + kDebug() << "Fallback to VCalFormat"; + VCalFormat vCal; + success = vCal.load( calendar(), d->mFileName ); +- calendar()->setProductId( vCal.productId() ); ++ productId = vCal.loadedProductId(); + } else { + return false; + } +@@ -128,11 +133,10 @@ bool FileStorage::load() + kDebug() << "Warning! There should be an exception set."; + return false; + } +- } else { +- calendar()->setProductId( iCal.loadedProductId() ); + } + } + ++ calendar()->setProductId( productId ); + calendar()->setModified( false ); + + return true; diff --git a/kcalcore/icalformat_p.cpp b/kcalcore/icalformat_p.cpp index 855c8ed..4a63dea 100644 --- a/kcalcore/icalformat_p.cpp @@ -13,6 +191,80 @@ } c.remove( c.indexOf( x ) ); +diff --git a/kimap/imapstreamparser.cpp b/kimap/imapstreamparser.cpp +index 3a55cfc..50a8552 100644 +--- a/kimap/imapstreamparser.cpp ++++ b/kimap/imapstreamparser.cpp +@@ -242,6 +242,9 @@ QList<QByteArray> ImapStreamParser::readParenthesizedList() + } + if ( m_data.at(i) == '[' ) { + concatToLast = true; ++ if ( result.isEmpty() ) { ++ result.append( QByteArray() ); ++ } + result.last()+='['; + ++i; + continue; +diff --git a/kimap/sessionthread.cpp b/kimap/sessionthread.cpp +index d169cfb..8278156 100644 +--- a/kimap/sessionthread.cpp ++++ b/kimap/sessionthread.cpp +@@ -104,6 +104,9 @@ void SessionThread::readMessage() + literal+= m_stream->readLiteralPart(); + } + *payload << Message::Part(literal); ++ } else { ++ // Oops! Something really bad happened ++ throw ImapParserException( "Inconsistent state, probably due to some packet loss" ); + } + } + +diff --git a/kimap/tests/fetchjobtest.cpp b/kimap/tests/fetchjobtest.cpp +index ebee93b..749234c 100644 +--- a/kimap/tests/fetchjobtest.cpp ++++ b/kimap/tests/fetchjobtest.cpp +@@ -104,7 +104,29 @@ void testFetch_data() { + << "S: From: John Smith <jonathanr.smith@foobarbaz.com>\r\nTo: "amagicemailaddress@foobarbazbarfoo.com"\r\n\t<amagicemailaddress@foobarbazbarfoo.com>\r\nDate: Mon, 11 Oct 2010 03:34:48 +0100\r\nSubject: unsubscribe\r\nMessage-ID: <ASDFFDSASDFFDS@foobarbaz.com>\r\n\r\n" + << "X"; + scope.mode = KIMAP::FetchJob::FetchScope::Headers; +- QTest::newRow( "partial" ) << false << KIMAP::ImapSet( 11, 11 ) << 1 << scenario << scope; ++ QTest::newRow( "connection drop" ) << false << KIMAP::ImapSet( 11, 11 ) << 1 << scenario << scope; ++ ++ ++ scenario.clear(); ++ // Important bit here if "([127.0.0.1])" which used to crash the stream parser ++ scenario << FakeServer::preauth() ++ << "C: A000001 FETCH 11 (RFC822.SIZE INTERNALDATE BODY.PEEK[HEADER.FIELDS (TO FROM MESSAGE-ID REFERENCES IN-REPLY-TO SUBJECT DATE)] FLAGS UID)" ++ << "S: * 11 FETCH (RFC822.SIZE 770 INTERNALDATE "11-Oct-2010 03:33:50 +0100" BODY[HEADER.FIELDS (TO FROM MESSAGE-ID REFERENCES IN-REPLY-TO SUBJECT DATE)] {246}" ++ << "S: ([127.0.0.1])\r\nDate: Mon, 11 Oct 2010 03:34:48 +0100\r\nSubject: unsubscribe\r\nMessage-ID: <ASDFFDSASDFFDS@foobarbaz.com>\r\n\r\n" ++ << "X"; ++ scope.mode = KIMAP::FetchJob::FetchScope::Headers; ++ QTest::newRow( "buffer overwrite" ) << false << KIMAP::ImapSet( 11, 11 ) << 1 << scenario << scope; ++ ++ ++ scenario.clear(); ++ // We're assuming a buffer overwrite here which made us miss the opening parenthesis ++ // for the properties list ++ scenario << FakeServer::preauth() ++ << "C: A000001 FETCH 11 (RFC822.SIZE INTERNALDATE BODY.PEEK[HEADER.FIELDS (TO FROM MESSAGE-ID REFERENCES IN-REPLY-TO SUBJECT DATE)] FLAGS UID)" ++ << "S: * 11 FETCH {10}doh!\r\n\r\n\r\n)\r\n" ++ << "X"; ++ scope.mode = KIMAP::FetchJob::FetchScope::Headers; ++ QTest::newRow( "buffer overwrite 2" ) << false << KIMAP::ImapSet( 11, 11 ) << 1 << scenario << scope; + } + + void testFetch() +@@ -139,7 +161,9 @@ void testFetch() + + + bool result = job->exec(); +- QEXPECT_FAIL("partial" , "Expected failure on partial response", Continue); ++ QEXPECT_FAIL("connection drop", "Expected failure on connection drop", Continue); ++ QEXPECT_FAIL("buffer overwrite", "Expected failure on confused list", Continue); ++ QEXPECT_FAIL("buffer overwrite 2", "Expected beginning of message missing", Continue); + QVERIFY( result ); + if ( result ) { + QVERIFY( m_signals.count()>0 ); diff --git a/kioslave/mbox/readmbox.cpp b/kioslave/mbox/readmbox.cpp index c6bcdb0..2473889 100644 --- a/kioslave/mbox/readmbox.cpp @@ -26,6 +278,21 @@ } } +diff --git a/kmime/kmime_content.cpp b/kmime/kmime_content.cpp +index fa1ad6f..a4d873c 100644 +--- a/kmime/kmime_content.cpp ++++ b/kmime/kmime_content.cpp +@@ -558,8 +558,8 @@ void Content::addContent( Content *c, bool prepend ) + void Content::removeContent( Content *c, bool del ) + { + Q_D( Content ); +- Q_ASSERT( d->multipartContents.contains( c ) ); +- ++ if( !d->multipartContents.contains( c ) ) ++ return; + // This method makes no sense for encapsulated messages. Should be covered by the above + // assert already, though. + Q_ASSERT( !bodyIsMessage() ); diff --git a/kpimidentities/identity.cpp b/kpimidentities/identity.cpp index d4b996a..636a9c2 100644 --- a/kpimidentities/identity.cpp ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Remember to have fun... -- To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-commit+help@opensuse.org