Application: kontact (4.7.3) KDE Platform Version: 4.7.4 (4.7.4) Qt Version: 4.7.4 Operating System: Linux 3.0.0-12-generic i686 Distribution: Linux Mint 12 KDE -- Information about the crash: - What I was doing when the application crashed: I clicked File -> Quit and the Crash Reporting Assistant window opened. I had just installed akonadi-kde-resource-googledata and I was restarting Kontact so that this package would be usable in Kontact. -- Backtrace: Application: Kontact (kontact), signal: Aborted [Current thread is 1 (Thread 0xb7709730 (LWP 22220))] Thread 4 (Thread 0xb6ab9b70 (LWP 22221)): #0 0x0056b416 in __kernel_vsyscall () #1 0x02cdfa5c in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/i386-linux-gnu/libpthread.so.0 #2 0x00c5ecfc in pthread_cond_wait () from /lib/i386-linux-gnu/libc.so.6 #3 0x0208d883 in ?? () from /usr/lib/i386-linux-gnu/libQtWebKit.so.4 #4 0x0208d99f in ?? () from /usr/lib/i386-linux-gnu/libQtWebKit.so.4 #5 0x02cdbd31 in start_thread () from /lib/i386-linux-gnu/libpthread.so.0 #6 0x00c510ce in clone () from /lib/i386-linux-gnu/libc.so.6 Backtrace stopped: Not enough registers or memory available to unwind further Thread 3 (Thread 0xb6190b70 (LWP 22222)): #0 0x02cded44 in __pthread_mutex_unlock_usercnt () from /lib/i386-linux-gnu/libpthread.so.0 #1 0x00c5ef54 in pthread_mutex_unlock () from /lib/i386-linux-gnu/libc.so.6 #2 0x063f787f in g_main_context_prepare () from /lib/i386-linux-gnu/libglib-2.0.so.0 #3 0x063f8637 in ?? () from /lib/i386-linux-gnu/libglib-2.0.so.0 #4 0x063f8c2a in g_main_context_iteration () from /lib/i386-linux-gnu/libglib-2.0.so.0 #5 0x00f56b37 in QEventDispatcherGlib::processEvents (this=0x8d36b30, flags=...) at kernel/qeventdispatcher_glib.cpp:424 #6 0x00f271dd in QEventLoop::processEvents (this=0xb61902c0, flags=...) at kernel/qeventloop.cpp:149 #7 0x00f27421 in QEventLoop::exec (this=0xb61902c0, flags=...) at kernel/qeventloop.cpp:201 #8 0x00e2a90b in QThread::exec (this=0x8d36260) at thread/qthread.cpp:498 #9 0x00e2a9fb in QThread::run (this=0x8d36260) at thread/qthread.cpp:565 #10 0x00e2d7b3 in QThreadPrivate::start (arg=0x8d36260) at thread/qthread_unix.cpp:331 #11 0x02cdbd31 in start_thread () from /lib/i386-linux-gnu/libpthread.so.0 #12 0x00c510ce in clone () from /lib/i386-linux-gnu/libc.so.6 Backtrace stopped: Not enough registers or memory available to unwind further Thread 2 (Thread 0xb3cf5b70 (LWP 22234)): #0 0x07f81d10 in clock_gettime () from /lib/i386-linux-gnu/librt.so.1 #1 0x00e847d5 in do_gettime (frac=0xb3cf5000, sec=0xb3cf4ff8) at tools/qelapsedtimer_unix.cpp:123 #2 qt_gettime () at tools/qelapsedtimer_unix.cpp:140 #3 0x00f574b6 in QTimerInfoList::updateCurrentTime (this=0x969f334) at kernel/qeventdispatcher_unix.cpp:339 #4 0x00f5780a in QTimerInfoList::timerWait (this=0x969f334, tm=...) at kernel/qeventdispatcher_unix.cpp:442 #5 0x00f56053 in timerSourcePrepareHelper (src=<optimized out>, timeout=0xb3cf510c) at kernel/qeventdispatcher_glib.cpp:136 #6 0x00f560ed in timerSourcePrepare (source=0x969f300, timeout=<optimized out>) at kernel/qeventdispatcher_glib.cpp:169 #7 0x063f788c in g_main_context_prepare () from /lib/i386-linux-gnu/libglib-2.0.so.0 #8 0x063f8637 in ?? () from /lib/i386-linux-gnu/libglib-2.0.so.0 #9 0x063f8c2a in g_main_context_iteration () from /lib/i386-linux-gnu/libglib-2.0.so.0 #10 0x00f56b37 in QEventDispatcherGlib::processEvents (this=0x90a1088, flags=...) at kernel/qeventdispatcher_glib.cpp:424 #11 0x00f271dd in QEventLoop::processEvents (this=0xb3cf5290, flags=...) at kernel/qeventloop.cpp:149 #12 0x00f27421 in QEventLoop::exec (this=0xb3cf5290, flags=...) at kernel/qeventloop.cpp:201 #13 0x00e2a90b in QThread::exec (this=0x969a520) at thread/qthread.cpp:498 #14 0x00f07e2d in QInotifyFileSystemWatcherEngine::run (this=0x969a520) at io/qfilesystemwatcher_inotify.cpp:248 #15 0x00e2d7b3 in QThreadPrivate::start (arg=0x969a520) at thread/qthread_unix.cpp:331 #16 0x02cdbd31 in start_thread () from /lib/i386-linux-gnu/libpthread.so.0 #17 0x00c510ce in clone () from /lib/i386-linux-gnu/libc.so.6 Backtrace stopped: Not enough registers or memory available to unwind further Thread 1 (Thread 0xb7709730 (LWP 22220)): [KCrash Handler] #7 0x0056b416 in __kernel_vsyscall () #8 0x00bacc8f in raise () from /lib/i386-linux-gnu/libc.so.6 #9 0x00bb02b5 in abort () from /lib/i386-linux-gnu/libc.so.6 #10 0x00a574ed in __gnu_cxx::__verbose_terminate_handler() () from /usr/lib/i386-linux-gnu/libstdc++.so.6 #11 0x00a55283 in ?? () from /usr/lib/i386-linux-gnu/libstdc++.so.6 #12 0x00a552bf in std::terminate() () from /usr/lib/i386-linux-gnu/libstdc++.so.6 #13 0x00a55f32 in __cxa_pure_virtual () from /usr/lib/i386-linux-gnu/libstdc++.so.6 #14 0x0799ea58 in KMail::FolderShortcutActionManager::updateShortcutsForIndex (this=0x9200a88, parent=..., start=0, end=0) at ../../kmail/foldershortcutactionmanager.cpp:96 #15 0x0799ece3 in KMail::FolderShortcutActionManager::slotRowsInserted (this=0x9200a88, parent=..., start=0, end=0) at ../../kmail/foldershortcutactionmanager.cpp:91 #16 0x0799eef5 in KMail::FolderShortcutActionManager::qt_metacall (this=0x9200a88, _c=QMetaObject::InvokeMetaMethod, _id=<optimized out>, _a=0xbf81b910) at ./foldershortcutactionmanager.moc:153 #17 0x00f2eb7d in metacall (argv=0xbf81b910, idx=6, cl=QMetaObject::InvokeMetaMethod, object=0x9200a88) at kernel/qmetaobject.cpp:237 #18 QMetaObject::metacall (object=0x9200a88, cl=QMetaObject::InvokeMetaMethod, idx=6, argv=0xbf81b910) at kernel/qmetaobject.cpp:232 #19 0x00f3da6a in QMetaObject::activate (sender=0x8eba3c0, m=0x105f408, local_signal_index=5, argv=0xbf81b910) at kernel/qobject.cpp:3278 #20 0x00f8b695 in QAbstractItemModel::rowsInserted (this=0x8eba3c0, _t1=..., _t2=0, _t3=0) at .moc/release-shared/moc_qabstractitemmodel.cpp:181 #21 0x00f223a0 in QAbstractItemModel::endInsertRows (this=0x8eba3c0) at kernel/qabstractitemmodel.cpp:2412 #22 0x03d6217a in QSortFilterProxyModelPrivate::insert_source_items (this=0x909e8d8, source_to_proxy=..., proxy_to_source=..., source_items=..., source_parent=..., orient=Qt::Vertical, emit_signal=true) at itemviews/qsortfilterproxymodel.cpp:693 #23 0x03d6675c in QSortFilterProxyModelPrivate::source_items_inserted (this=0x909e8d8, source_parent=..., start=0, end=0, orient=Qt::Vertical) at itemviews/qsortfilterproxymodel.cpp:804 #24 0x03d66b30 in QSortFilterProxyModelPrivate::_q_sourceRowsInserted (this=0x909e8d8, source_parent=..., start=0, end=0) at itemviews/qsortfilterproxymodel.cpp:1278 #25 0x03d68de4 in QSortFilterProxyModel::qt_metacall (this=0x8eba3c0, _c=QMetaObject::InvokeMetaMethod, _id=12, _a=0xbf81bc00) at .moc/release-shared/moc_qsortfilterproxymodel.cpp:137 #26 0x02884ce3 in Akonadi::EntityMimeTypeFilterModel::qt_metacall (this=0x8eba3c0, _c=QMetaObject::InvokeMetaMethod, _id=37, _a=0xbf81bc00) at ./entitymimetypefiltermodel.moc:64 #27 0x00f2eb7d in metacall (argv=0xbf81bc00, idx=37, cl=QMetaObject::InvokeMetaMethod, object=0x8eba3c0) at kernel/qmetaobject.cpp:237 #28 QMetaObject::metacall (object=0x8eba3c0, cl=QMetaObject::InvokeMetaMethod, idx=37, argv=0xbf81bc00) at kernel/qmetaobject.cpp:232 #29 0x00f3da6a in QMetaObject::activate (sender=0x8fe1770, m=0x105f408, local_signal_index=5, argv=0xbf81bc00) at kernel/qobject.cpp:3278 #30 0x00f8b695 in QAbstractItemModel::rowsInserted (this=0x8fe1770, _t1=..., _t2=0, _t3=0) at .moc/release-shared/moc_qabstractitemmodel.cpp:181 #31 0x00f223a0 in QAbstractItemModel::endInsertRows (this=0x8fe1770) at kernel/qabstractitemmodel.cpp:2412 #32 0x02899d5e in Akonadi::EntityTreeModelPrivate::collectionsFetched (this=0x90aa1f0, collections=...) at ../../akonadi/entitytreemodel_p.cpp:474 #33 0x0288ad07 in Akonadi::EntityTreeModel::qt_metacall (this=0x8fe1770, _c=QMetaObject::InvokeMetaMethod, _id=<optimized out>, _a=0xbf81bf08) at ./entitytreemodel.moc:152 #34 0x00f2eb7d in metacall (argv=0xbf81bf08, idx=34, cl=QMetaObject::InvokeMetaMethod, object=0x8fe1770) at kernel/qmetaobject.cpp:237 #35 QMetaObject::metacall (object=0x8fe1770, cl=QMetaObject::InvokeMetaMethod, idx=34, argv=0xbf81bf08) at kernel/qmetaobject.cpp:232 #36 0x00f3da6a in QMetaObject::activate (sender=0x90e3400, m=0x29dd0c4, local_signal_index=0, argv=0xbf81bf08) at kernel/qobject.cpp:3278 #37 0x028476c5 in Akonadi::CollectionFetchJob::collectionsReceived (this=0x90e3400, _t1=...) at ./collectionfetchjob.moc:95 #38 0x0284a664 in timeout (this=0x9215a18) at ../../akonadi/collectionfetchjob.cpp:76 #39 Akonadi::CollectionFetchJob::qt_metacall (this=0x90e3400, _c=QMetaObject::InvokeMetaMethod, _id=2, _a=0xbf81bfd4) at ./collectionfetchjob.moc:82 #40 0x00f2eb7d in metacall (argv=0xbf81bfd4, idx=37, cl=QMetaObject::InvokeMetaMethod, object=0x90e3400) at kernel/qmetaobject.cpp:237 #41 QMetaObject::metacall (object=0x90e3400, cl=QMetaObject::InvokeMetaMethod, idx=37, argv=0xbf81bfd4) at kernel/qmetaobject.cpp:232 #42 0x00f3da6a in QMetaObject::activate (sender=0x9179d08, m=0x105f5f8, local_signal_index=0, argv=0x0) at kernel/qobject.cpp:3278 #43 0x00f8c7d5 in QTimer::timeout (this=0x9179d08) at .moc/release-shared/moc_qtimer.cpp:134 #44 0x00f45286 in QTimer::timerEvent (this=0x9179d08, e=0xbf81c3cc) at kernel/qtimer.cpp:271 #45 0x00f40994 in QObject::event (this=0x9179d08, e=0xbf81c3cc) at kernel/qobject.cpp:1181 #46 0x0373cd54 in notify_helper (e=0xbf81c3cc, receiver=0x9179d08, this=0x8c16fc0) at kernel/qapplication.cpp:4486 #47 QApplicationPrivate::notify_helper (this=0x8c16fc0, receiver=0x9179d08, e=0xbf81c3cc) at kernel/qapplication.cpp:4458 #48 0x03742103 in QApplication::notify (this=0xbf81c3cc, receiver=0x9179d08, e=0xbf81c3cc) at kernel/qapplication.cpp:3886 #49 0x00753971 in KApplication::notify (this=0xbf81d854, receiver=0x9179d08, event=0xbf81c3cc) at ../../kdeui/kernel/kapplication.cpp:311 #50 0x00f2819e in QCoreApplication::notifyInternal (this=0xbf81d854, receiver=0x9179d08, event=0xbf81c3cc) at kernel/qcoreapplication.cpp:787 #51 0x00f58c10 in sendEvent (event=0xbf81c3cc, receiver=<optimized out>) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:215 #52 QTimerInfoList::activateTimers (this=0x8c19cec) at kernel/qeventdispatcher_unix.cpp:603 #53 0x00f56122 in timerSourceDispatch (source=0x8c19cb8) at kernel/qeventdispatcher_glib.cpp:184 #54 0x063f825f in g_main_context_dispatch () from /lib/i386-linux-gnu/libglib-2.0.so.0 #55 0x063f8990 in ?? () from /lib/i386-linux-gnu/libglib-2.0.so.0 #56 0x063f8c2a in g_main_context_iteration () from /lib/i386-linux-gnu/libglib-2.0.so.0 #57 0x00f56ada in QEventDispatcherGlib::processEvents (this=0x8bf5268, flags=...) at kernel/qeventdispatcher_glib.cpp:422 #58 0x037f4e3a in QGuiEventDispatcherGlib::processEvents (this=0x8bf5268, flags=...) at kernel/qguieventdispatcher_glib.cpp:204 #59 0x00f271dd in QEventLoop::processEvents (this=0xbf81c640, flags=...) at kernel/qeventloop.cpp:149 #60 0x00f27421 in QEventLoop::exec (this=0xbf81c640, flags=...) at kernel/qeventloop.cpp:201 #61 0x03c747c9 in QDialog::exec (this=0x90a12b0) at dialogs/qdialog.cpp:552 #62 0x006aab74 in KMessageBox::createKMessageBox (dialog=0x90a12b0, icon=..., text=..., strlist=..., ask=..., checkboxReturn=0x0, options=..., details=..., notifyType=QMessageBox::Critical) at ../../kdeui/dialogs/kmessagebox.cpp:344 #63 0x006ab408 in KMessageBox::createKMessageBox (dialog=0x90a12b0, icon=QMessageBox::Critical, text=..., strlist=..., ask=..., checkboxReturn=0x0, options=..., details=...) at ../../kdeui/dialogs/kmessagebox.cpp:159 #64 0x006ac095 in KMessageBox::errorListWId (parent_id=0, text=..., strlist=..., caption=..., options=...) at ../../kdeui/dialogs/kmessagebox.cpp:854 #65 0x006ac2c3 in KMessageBox::error (parent=0x0, text=..., caption=..., options=...) at ../../kdeui/dialogs/kmessagebox.cpp:821 #66 0x02895f6f in Akonadi::EntityTreeModelPrivate::fetchJobDone (this=0x90aa1f0, job=0x9661d20) at ../../akonadi/entitytreemodel_p.cpp:1185 #67 0x0288ac24 in Akonadi::EntityTreeModel::qt_metacall (this=0x8fe1770, _c=QMetaObject::InvokeMetaMethod, _id=<optimized out>, _a=0xbf81cb78) at ./entitytreemodel.moc:145 #68 0x00f2eb7d in metacall (argv=0xbf81cb78, idx=27, cl=QMetaObject::InvokeMetaMethod, object=0x8fe1770) at kernel/qmetaobject.cpp:237 #69 QMetaObject::metacall (object=0x8fe1770, cl=QMetaObject::InvokeMetaMethod, idx=27, argv=0xbf81cb78) at kernel/qmetaobject.cpp:232 #70 0x00f3da6a in QMetaObject::activate (sender=0x9661d20, m=0x4d358c, local_signal_index=3, argv=0xbf81cb78) at kernel/qobject.cpp:3278 #71 0x00325ef5 in KJob::result (this=0x9661d20, _t1=0x9661d20) at ./kjob.moc:194 #72 0x00325f48 in KJob::emitResult (this=0x9661d20) at ../../kdecore/jobs/kjob.cpp:312 #73 0x00326005 in KJob::kill (this=0x9661d20, verbosity=KJob::EmitResult) at ../../kdecore/jobs/kjob.cpp:112 #74 0x02911a58 in Akonadi::Session::clear (this=0x9019238) at ../../akonadi/session.cpp:425 #75 0x02911cdd in Akonadi::Session::~Session (this=0x9019238, __in_chrg=<optimized out>) at ../../akonadi/session.cpp:394 #76 0x02911d42 in Akonadi::Session::~Session (this=0x9019238, __in_chrg=<optimized out>) at ../../akonadi/session.cpp:396 #77 0x00f3c841 in QObjectPrivate::deleteChildren (this=0x9059bb8) at kernel/qobject.cpp:1955 #78 0x00f41439 in QObject::~QObject (this=0x8ff3a60, __in_chrg=<optimized out>) at kernel/qobject.cpp:946 #79 0x078f6981 in KMKernel::~KMKernel (this=0x8ff3a60, __in_chrg=<optimized out>) at ../../kmail/kmkernel.cpp:231 #80 0x078f6ab2 in KMKernel::~KMKernel (this=0x8ff3a60, __in_chrg=<optimized out>) at ../../kmail/kmkernel.cpp:241 #81 0x0652d7e5 in KMailPart::~KMailPart (this=0x8efff80, __in_chrg=<optimized out>, __vtt_parm=<optimized out>) at ../../kmail/kmail_part.cpp:139 #82 0x0652d902 in KMailPart::~KMailPart (this=0x8efff80, __in_chrg=<optimized out>, __vtt_parm=<optimized out>) at ../../kmail/kmail_part.cpp:141 #83 0x00b77878 in KontactInterface::Plugin::~Plugin (this=0x8f28458, __vtt_parm=0x5c79b04, __in_chrg=<optimized out>) at ../../kontactinterface/plugin.cpp:90 #84 0x05c6b0c5 in KMailPlugin::~KMailPlugin (this=0x8f28458, __in_chrg=<optimized out>, __vtt_parm=<optimized out>) at ../../../../kontact/plugins/kmail/kmail_plugin.cpp:159 #85 0x05c6b112 in KMailPlugin::~KMailPlugin (this=0x8f28458, __in_chrg=<optimized out>, __vtt_parm=<optimized out>) at ../../../../kontact/plugins/kmail/kmail_plugin.cpp:163 #86 0x001fb697 in Kontact::MainWindow::~MainWindow (this=0x8d30300, __in_chrg=<optimized out>, __vtt_parm=<optimized out>) at ../../../kontact/src/mainwindow.cpp:287 #87 0x001fb812 in Kontact::MainWindow::~MainWindow (this=0x8d30300, __in_chrg=<optimized out>, __vtt_parm=<optimized out>) at ../../../kontact/src/mainwindow.cpp:289 #88 0x00f3b5f3 in qDeleteInEventHandler (o=0x8d30300) at kernel/qobject.cpp:3986 #89 0x00f40b80 in QObject::event (this=0x8d30300, e=0x97fe820) at kernel/qobject.cpp:1200 #90 0x03796c62 in QWidget::event (this=0x8d30300, event=0x97fe820) at kernel/qwidget.cpp:8754 #91 0x03bb94cc in QMainWindow::event (this=0x8d30300, event=0x97fe820) at widgets/qmainwindow.cpp:1478 #92 0x0082f5a4 in KMainWindow::event (this=0x8d30300, ev=0x97fe820) at ../../kdeui/widgets/kmainwindow.cpp:1084 #93 0x00877a02 in KXmlGuiWindow::event (this=0x8d30300, ev=0x97fe820) at ../../kdeui/xmlgui/kxmlguiwindow.cpp:126 #94 0x0373cd54 in notify_helper (e=0x97fe820, receiver=0x8d30300, this=0x8c16fc0) at kernel/qapplication.cpp:4486 #95 QApplicationPrivate::notify_helper (this=0x8c16fc0, receiver=0x8d30300, e=0x97fe820) at kernel/qapplication.cpp:4458 #96 0x037421a8 in QApplication::notify (this=0x8c16fc0, receiver=0x8d30300, e=0x97fe820) at kernel/qapplication.cpp:4451 #97 0x00753971 in KApplication::notify (this=0xbf81d854, receiver=0x8d30300, event=0x97fe820) at ../../kdeui/kernel/kapplication.cpp:311 #98 0x00f2819e in QCoreApplication::notifyInternal (this=0xbf81d854, receiver=0x8d30300, event=0x97fe820) at kernel/qcoreapplication.cpp:787 #99 0x00f2bf93 in sendEvent (event=<optimized out>, receiver=<optimized out>) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:215 #100 QCoreApplicationPrivate::sendPostedEvents (receiver=0x0, event_type=0, data=0x8bf4540) at kernel/qcoreapplication.cpp:1428 #101 0x00f2c0ec in QCoreApplication::sendPostedEvents (receiver=0x0, event_type=0) at kernel/qcoreapplication.cpp:1321 #102 0x00f566a4 in sendPostedEvents () at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:220 #103 postEventSourceDispatch (s=0x8c19a90) at kernel/qeventdispatcher_glib.cpp:277 #104 0x063f825f in g_main_context_dispatch () from /lib/i386-linux-gnu/libglib-2.0.so.0 #105 0x063f8990 in ?? () from /lib/i386-linux-gnu/libglib-2.0.so.0 #106 0x063f8c2a in g_main_context_iteration () from /lib/i386-linux-gnu/libglib-2.0.so.0 #107 0x00f56ada in QEventDispatcherGlib::processEvents (this=0x8bf5268, flags=...) at kernel/qeventdispatcher_glib.cpp:422 #108 0x037f4e3a in QGuiEventDispatcherGlib::processEvents (this=0x8bf5268, flags=...) at kernel/qguieventdispatcher_glib.cpp:204 #109 0x00f271dd in QEventLoop::processEvents (this=0xbf81d7b4, flags=...) at kernel/qeventloop.cpp:149 #110 0x00f27421 in QEventLoop::exec (this=0xbf81d7b4, flags=...) at kernel/qeventloop.cpp:201 #111 0x00f2c19d in QCoreApplication::exec () at kernel/qcoreapplication.cpp:1064 #112 0x0373a8f4 in QApplication::exec () at kernel/qapplication.cpp:3760 #113 0x0804ac91 in main (argc=) at ../../../kontact/src/main.cpp:218 This bug may be a duplicate of or related to bug 196215. Reported using DrKonqi
Git commit 3b492be3ef3404cac5c91b23a0cce7a9334a5dc5 by Allen Winter. Committed on 20/01/2012 at 00:37. Pushed by winterz into branch 'master'. in updateShortcutsForIndex(), check that the model does indeed have a valid index for the specified row indexes before accessing them. probably fixes the crash mentioned in 291886. FIXED-IN: 4.8.1 MERGE: 4.8 M +13 -9 kmail/foldershortcutactionmanager.cpp http://commits.kde.org/kdepim/3b492be3ef3404cac5c91b23a0cce7a9334a5dc5
Git commit f4fa3aebfa15c80abedbc82090e7c2f8ad5d20dc by Allen Winter. Committed on 20/01/2012 at 00:37. Pushed by winterz into branch 'KDE/4.8'. in updateShortcutsForIndex(), check that the model does indeed have a valid index for the specified row indexes before accessing them. probably fixes the crash mentioned in 291886. FIXED-IN: 4.8.1 MERGE: 4.8 (cherry picked from commit 3b492be3ef3404cac5c91b23a0cce7a9334a5dc5) M +13 -9 kmail/foldershortcutactionmanager.cpp http://commits.kde.org/kdepim/f4fa3aebfa15c80abedbc82090e7c2f8ad5d20dc