<table><tr><td style="">arrowd updated this revision to Diff 58398.<br />arrowd added a comment.
</td><a style="text-decoration: none; padding: 4px 8px; margin: 0 8px 8px; float: right; color: #464C5C; font-weight: bold; border-radius: 3px; background-color: #F7F7F9; background-image: linear-gradient(to bottom,#fff,#f1f0f1); display: inline-block; border: 1px solid rgba(71,87,120,.2);" href="https://phabricator.kde.org/D18758">View Revision</a></tr></table><br /><div><div><p>Changes:</p>

<ul class="remarkup-list">
<li class="remarkup-list-item">Import QtPromise 0.5.0 into kdevplatform/3dparty/ directory.</li>
<li class="remarkup-list-item">Remove synchronious KIO calls from Project::open() and use QPromises there instead.</li>
</ul>

<p>Current problems are:</p>

<ul class="remarkup-list">
<li class="remarkup-list-item">The code looks messy. I'm probably missing how to handle these QPromises properly, without so much boilerplate code.</li>
<li class="remarkup-list-item">The change didn't actually help to fix the initial problem. Moreover, the test now crashes even without ASan on <tt style="background: #ebebeb; font-size: 13px;">master</tt>, which probably means that KDevelop is unusable on FreeBSD ATM.</li>
</ul>

<p>ASan report looks pretty much the same, only source lines changed:</p>

<div class="remarkup-code-block" style="margin: 12px 0;" data-code-lang="text" data-sigil="remarkup-code-block"><pre class="remarkup-code" style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; padding: 12px; margin: 0; background: rgba(71, 87, 120, 0.08);">PASS   : TestCMakeManager::initTestCase()
PASS   : TestCMakeManager::testReload()
=================================================================
==89230==ERROR: AddressSanitizer: heap-use-after-free on address 0x604000443b60 at pc 0x000800ae7dd0 bp 0x7fffffffc130 sp 0x7fffffffc128
READ of size 8 at 0x604000443b60 thread T0
    #0 0x800ae7dcf in KDevelop::StatusBar::showProgress(KDevelop::IStatus*, int, int, int) /home/arr/projects/kdevelop/kdevplatform/shell/statusbar.cpp:243:56
    #1 0x800824e3f in KDevelop::StatusBar::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) /home/arr/projects/kdevelop/build/kdevplatform/shell/KDevPlatformShell_autogen/EWIEGA46WW/moc_statusbar.cpp:115:21
    #2 0x8056666a9 in QMetaCallEvent::placeMetaCall(QObject*) /wrkdirs/usr/ports/devel/qt5-core/work/qtbase-everywhere-src-5.12.2/src/corelib/kernel/qobject.cpp:520:9
    #3 0x805668248 in QObject::event(QEvent*) /wrkdirs/usr/ports/devel/qt5-core/work/qtbase-everywhere-src-5.12.2/src/corelib/kernel/qobject.cpp:1260:18
    #4 0x804378f50 in QWidget::event(QEvent*) /wrkdirs/usr/ports/x11-toolkits/qt5-widgets/work/qtbase-everywhere-src-5.12.2/src/widgets/kernel/qwidget.cpp:9383:25
    #5 0x8045b0a71 in QStatusBar::event(QEvent*) /wrkdirs/usr/ports/x11-toolkits/qt5-widgets/work/qtbase-everywhere-src-5.12.2/src/widgets/widgets/qstatusbar.cpp:753:21
    #6 0x8043184de in QApplicationPrivate::notify_helper(QObject*, QEvent*) /wrkdirs/usr/ports/x11-toolkits/qt5-widgets/work/qtbase-everywhere-src-5.12.2/src/widgets/kernel/qapplication.cpp:3736:37
    #7 0x80431d5d6 in QApplication::notify(QObject*, QEvent*) /wrkdirs/usr/ports/x11-toolkits/qt5-widgets/work/qtbase-everywhere-src-5.12.2/src/widgets/kernel/qapplication.cpp:3687:18
    #8 0x80561640d in QCoreApplication::notifyInternal2(QObject*, QEvent*) /wrkdirs/usr/ports/devel/qt5-core/work/qtbase-everywhere-src-5.12.2/src/corelib/kernel/qcoreapplication.cpp:1060:18
    #9 0x805617047 in QCoreApplication::sendEvent(QObject*, QEvent*) /wrkdirs/usr/ports/devel/qt5-core/work/qtbase-everywhere-src-5.12.2/src/corelib/kernel/qcoreapplication.cpp:1450:12
    #10 0x805617ccd in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) /wrkdirs/usr/ports/devel/qt5-core/work/qtbase-everywhere-src-5.12.2/src/corelib/kernel/qcoreapplication.cpp:1799:9
    #11 0x805616f4e in QCoreApplication::sendPostedEvents(QObject*, int) /wrkdirs/usr/ports/devel/qt5-core/work/qtbase-everywhere-src-5.12.2/src/corelib/kernel/qcoreapplication.cpp:1653:5
    #12 0x8056c630d in postEventSourceDispatch(_GSource*, int (*)(void*), void*) /wrkdirs/usr/ports/devel/qt5-core/work/qtbase-everywhere-src-5.12.2/src/corelib/kernel/qeventdispatcher_glib.cpp:276:5
    #13 0x80714d3b6 in g_main_context_dispatch (/usr/local/lib/libglib-2.0.so.0+0xce3b6)
    #14 0x80714d742  (/usr/local/lib/libglib-2.0.so.0+0xce742)
    #15 0x80714d7f3 in g_main_context_iteration (/usr/local/lib/libglib-2.0.so.0+0xce7f3)
    #16 0x8056c5484 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) /wrkdirs/usr/ports/devel/qt5-core/work/qtbase-everywhere-src-5.12.2/src/corelib/kernel/qeventdispatcher_glib.cpp:422:19
    #17 0x805616ba0 in QCoreApplication::processEvents(QFlags<QEventLoop::ProcessEventsFlag>, int) /wrkdirs/usr/ports/devel/qt5-core/work/qtbase-everywhere-src-5.12.2/src/corelib/kernel/qcoreapplication.cpp:1308:42
    #18 0x8056bb7ff in QTest::qWait(int) /wrkdirs/usr/ports/devel/qt5-core/work/qtbase-everywhere-src-5.12.2/src/corelib/kernel/qtestsupport_core.cpp:104:9
    #19 0x8004018dc in KDevelop::TestCore::shutdown() /home/arr/projects/kdevelop/kdevplatform/tests/testcore.cpp:94:9
    #20 0x3099a0 in TestCMakeManager::cleanupTestCase() /home/arr/projects/kdevelop/plugins/cmake/tests/test_cmakemanager.cpp:55:5
    #21 0x302e5c in TestCMakeManager::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) /home/arr/projects/kdevelop/build/plugins/cmake/tests/test_cmakemanager_autogen/EWIEGA46WW/moc_test_cmakemanager.cpp:136:21
    #22 0x805625ed8 in QMetaMethod::invoke(QObject*, Qt::ConnectionType, QGenericReturnArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument) const /wrkdirs/usr/ports/devel/qt5-core/work/qtbase-everywhere-src-5.12.2/src/corelib/kernel/qmetaobject.cpp:2295:13
    #23 0x800495a9b  (/usr/local/lib/qt5/libQt5Test.so.5+0x1ea9b)
    #24 0x8004962db in QTest::qRun() (/usr/local/lib/qt5/libQt5Test.so.5+0x1f2db)
    #25 0x800495ed3 in QTest::qExec(QObject*, int, char**) (/usr/local/lib/qt5/libQt5Test.so.5+0x1eed3)
    #26 0x308abd in main /home/arr/projects/kdevelop/plugins/cmake/tests/test_cmakemanager.cpp:39:1
    #27 0x25a10e in _start /usr/src/lib/csu/amd64/crt1.c:76:7

0x604000443b60 is located 16 bytes inside of 40-byte region [0x604000443b50,0x604000443b78)
freed by thread T0 here:
    #0 0x301822 in operator delete(void*) /usr/src/contrib/compiler-rt/lib/asan/asan_new_delete.cc:167:3
    #1 0x8009e5b41 in KDevelop::ProjectProgress::~ProjectProgress() /home/arr/projects/kdevelop/kdevplatform/shell/project.cpp:108:1
    #2 0x8009e6c22 in KDevelop::Project::~Project() /home/arr/projects/kdevelop/kdevplatform/shell/project.cpp:466:5
    #3 0x8009e6c68 in KDevelop::Project::~Project() /home/arr/projects/kdevelop/kdevplatform/shell/project.cpp:465:1
    #4 0x80566861a in qDeleteInEventHandler(QObject*) /wrkdirs/usr/ports/devel/qt5-core/work/qtbase-everywhere-src-5.12.2/src/corelib/kernel/qobject.cpp:4647:5
    #5 0x8056681d1 in QObject::event(QEvent*) /wrkdirs/usr/ports/devel/qt5-core/work/qtbase-everywhere-src-5.12.2/src/corelib/kernel/qobject.cpp:1251:9
    #6 0x8043184de in QApplicationPrivate::notify_helper(QObject*, QEvent*) /wrkdirs/usr/ports/x11-toolkits/qt5-widgets/work/qtbase-everywhere-src-5.12.2/src/widgets/kernel/qapplication.cpp:3736:37
    #7 0x80431a59b in QApplication::notify(QObject*, QEvent*) /wrkdirs/usr/ports/x11-toolkits/qt5-widgets/work/qtbase-everywhere-src-5.12.2/src/widgets/kernel/qapplication.cpp:3093:18
    #8 0x80561640d in QCoreApplication::notifyInternal2(QObject*, QEvent*) /wrkdirs/usr/ports/devel/qt5-core/work/qtbase-everywhere-src-5.12.2/src/corelib/kernel/qcoreapplication.cpp:1060:18
    #9 0x805617047 in QCoreApplication::sendEvent(QObject*, QEvent*) /wrkdirs/usr/ports/devel/qt5-core/work/qtbase-everywhere-src-5.12.2/src/corelib/kernel/qcoreapplication.cpp:1450:12
    #10 0x805617ccd in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) /wrkdirs/usr/ports/devel/qt5-core/work/qtbase-everywhere-src-5.12.2/src/corelib/kernel/qcoreapplication.cpp:1799:9
    #11 0x805616f4e in QCoreApplication::sendPostedEvents(QObject*, int) /wrkdirs/usr/ports/devel/qt5-core/work/qtbase-everywhere-src-5.12.2/src/corelib/kernel/qcoreapplication.cpp:1653:5
    #12 0x800494375  (/usr/local/lib/qt5/libQt5Test.so.5+0x1d375)
    #13 0x800494be5  (/usr/local/lib/qt5/libQt5Test.so.5+0x1dbe5)
    #14 0x800495976  (/usr/local/lib/qt5/libQt5Test.so.5+0x1e976)
    #15 0x8004962db in QTest::qRun() (/usr/local/lib/qt5/libQt5Test.so.5+0x1f2db)
    #16 0x800495ed3 in QTest::qExec(QObject*, int, char**) (/usr/local/lib/qt5/libQt5Test.so.5+0x1eed3)
    #17 0x308abd in main /home/arr/projects/kdevelop/plugins/cmake/tests/test_cmakemanager.cpp:39:1
    #18 0x25a10e in _start /usr/src/lib/csu/amd64/crt1.c:76:7
    #19 0x8003a0fff  (<unknown module>)

previously allocated by thread T0 here:
    #0 0x300be2 in operator new(unsigned long) /usr/src/contrib/compiler-rt/lib/asan/asan_new_delete.cc:106:3
    #1 0x8009e6889 in KDevelop::Project::Project(QObject*) /home/arr/projects/kdevelop/kdevplatform/shell/project.cpp:460:19
    #2 0x800998238 in KDevelop::ProjectControllerPrivate::importProject(QUrl const&) /home/arr/projects/kdevelop/kdevplatform/shell/projectcontroller.cpp:345:29
    #3 0x8009813d2 in KDevelop::ProjectController::openProject(QUrl const&) /home/arr/projects/kdevelop/kdevplatform/shell/projectcontroller.cpp:879:12
    #4 0x308439 in loadProject(QString const&, QString const&) /home/arr/projects/kdevelop/plugins/cmake/tests/testhelpers.h:138:51
    #5 0x31b1d2 in TestCMakeManager::testReload() /home/arr/projects/kdevelop/plugins/cmake/tests/test_cmakemanager.cpp:338:25
    #6 0x302f3c in TestCMakeManager::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) /home/arr/projects/kdevelop/build/plugins/cmake/tests/test_cmakemanager_autogen/EWIEGA46WW/moc_test_cmakemanager.cpp:152:22
    #7 0x805625ed8 in QMetaMethod::invoke(QObject*, Qt::ConnectionType, QGenericReturnArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument) const /wrkdirs/usr/ports/devel/qt5-core/work/qtbase-everywhere-src-5.12.2/src/corelib/kernel/qmetaobject.cpp:2295:13
    #8 0x800494242  (/usr/local/lib/qt5/libQt5Test.so.5+0x1d242)
    #9 0x800494be5  (/usr/local/lib/qt5/libQt5Test.so.5+0x1dbe5)
    #10 0x800495976  (/usr/local/lib/qt5/libQt5Test.so.5+0x1e976)
    #11 0x8004962db in QTest::qRun() (/usr/local/lib/qt5/libQt5Test.so.5+0x1f2db)
    #12 0x800495ed3 in QTest::qExec(QObject*, int, char**) (/usr/local/lib/qt5/libQt5Test.so.5+0x1eed3)
    #13 0x308abd in main /home/arr/projects/kdevelop/plugins/cmake/tests/test_cmakemanager.cpp:39:1
    #14 0x25a10e in _start /usr/src/lib/csu/amd64/crt1.c:76:7
    #15 0x8003a0fff  (<unknown module>)

SUMMARY: AddressSanitizer: heap-use-after-free /home/arr/projects/kdevelop/kdevplatform/shell/statusbar.cpp:243:56 in KDevelop::StatusBar::showProgress(KDevelop::IStatus*, int, int, int)</pre></div></div></div><br /><div><strong>REPOSITORY</strong><div><div>R32 KDevelop</div></div></div><br /><div><strong>CHANGES SINCE LAST UPDATE</strong><div><a href="https://phabricator.kde.org/D18758?vs=50948&id=58398">https://phabricator.kde.org/D18758?vs=50948&id=58398</a></div></div><br /><div><strong>BRANCH</strong><div><div>asan_fix</div></div></div><br /><div><strong>REVISION DETAIL</strong><div><a href="https://phabricator.kde.org/D18758">https://phabricator.kde.org/D18758</a></div></div><br /><div><strong>AFFECTED FILES</strong><div><div>kdevplatform/3rdparty/CMakeLists.txt<br />
kdevplatform/3rdparty/qtpromise/CMakeLists.txt<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/.appveyor.yml<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/.gitignore<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/.travis.yml<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/LICENSE<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/README.md<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/docs/.vuepress/config.js<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/docs/.vuepress/override.styl<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/docs/.vuepress/public/favicon.ico<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/docs/.vuepress/public/favicon.png<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/docs/.vuepress/style.styl<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/docs/README.md<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/docs/qtpromise/api-reference.md<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/docs/qtpromise/exceptions/canceled.md<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/docs/qtpromise/exceptions/context.md<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/docs/qtpromise/exceptions/timeout.md<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/docs/qtpromise/exceptions/undefined.md<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/docs/qtpromise/getting-started.md<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/docs/qtpromise/helpers/all.md<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/docs/qtpromise/helpers/attempt.md<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/docs/qtpromise/helpers/connect.md<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/docs/qtpromise/helpers/each.md<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/docs/qtpromise/helpers/filter.md<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/docs/qtpromise/helpers/map.md<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/docs/qtpromise/helpers/reduce.md<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/docs/qtpromise/helpers/resolve.md<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/docs/qtpromise/qpromise/all.md<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/docs/qtpromise/qpromise/constructor.md<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/docs/qtpromise/qpromise/delay.md<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/docs/qtpromise/qpromise/each.md<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/docs/qtpromise/qpromise/fail.md<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/docs/qtpromise/qpromise/filter.md<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/docs/qtpromise/qpromise/finally.md<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/docs/qtpromise/qpromise/isfulfilled.md<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/docs/qtpromise/qpromise/ispending.md<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/docs/qtpromise/qpromise/isrejected.md<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/docs/qtpromise/qpromise/map.md<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/docs/qtpromise/qpromise/reduce.md<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/docs/qtpromise/qpromise/reject.md<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/docs/qtpromise/qpromise/resolve.md<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/docs/qtpromise/qpromise/tap.md<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/docs/qtpromise/qpromise/tapfail.md<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/docs/qtpromise/qpromise/then.md<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/docs/qtpromise/qpromise/timeout.md<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/docs/qtpromise/qpromise/wait.md<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/docs/qtpromise/qtconcurrent.md<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/docs/qtpromise/qtsignals.md<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/docs/qtpromise/thread-safety.md<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/include/QtPromise<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/package/features/qtpromise.prf<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/qpm.json<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/qtpromise.pri<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/qtpromise.pro<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/src/qtpromise/qpromise.h<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/src/qtpromise/qpromise.inl<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/src/qtpromise/qpromise_p.h<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/src/qtpromise/qpromiseconnections.h<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/src/qtpromise/qpromiseexceptions.h<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/src/qtpromise/qpromisefuture.h<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/src/qtpromise/qpromiseglobal.h<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/src/qtpromise/qpromisehelpers.h<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/src/qtpromise/qpromisehelpers_p.h<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/src/qtpromise/qpromiseresolver.h<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/src/qtpromise/qtpromise.pri<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/src/qtpromise/qtpromise.pro<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/src/src.pro<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/auto.pro<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/benchmark/benchmark.pro<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/benchmark/tst_benchmark.cpp<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/deprecations/deprecations.pri<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/deprecations/deprecations.pro<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/deprecations/helpers/helpers.pro<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/deprecations/helpers/qpromise/qpromise.pro<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/deprecations/helpers/qpromise/tst_qpromise.cpp<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/deprecations/helpers/qpromiseall/qpromiseall.pro<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/deprecations/helpers/qpromiseall/tst_qpromiseall.cpp<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/deprecations/qpromise/all/all.pro<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/deprecations/qpromise/all/tst_all.cpp<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/deprecations/qpromise/qpromise.pro<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/exceptions/exceptions.pro<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/exceptions/tst_exceptions.cpp<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/future/future.pro<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/future/tst_future.cpp<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/helpers/all/all.pro<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/helpers/all/tst_all.cpp<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/helpers/attempt/attempt.pro<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/helpers/attempt/tst_attempt.cpp<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/helpers/connect/connect.pro<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/helpers/connect/tst_connect.cpp<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/helpers/each/each.pro<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/helpers/each/tst_each.cpp<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/helpers/filter/filter.pro<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/helpers/filter/tst_filter.cpp<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/helpers/helpers.pro<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/helpers/map/map.pro<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/helpers/map/tst_map.cpp<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/helpers/reduce/reduce.pro<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/helpers/reduce/tst_reduce.cpp<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/helpers/reject/reject.pro<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/helpers/reject/tst_reject.cpp<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/helpers/resolve/resolve.pro<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/helpers/resolve/tst_resolve.cpp<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/qpromise/construct/construct.pro<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/qpromise/construct/tst_construct.cpp<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/qpromise/delay/delay.pro<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/qpromise/delay/tst_delay.cpp<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/qpromise/each/each.pro<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/qpromise/each/tst_each.cpp<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/qpromise/fail/fail.pro<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/qpromise/fail/tst_fail.cpp<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/qpromise/filter/filter.pro<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/qpromise/filter/tst_filter.cpp<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/qpromise/finally/finally.pro<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/qpromise/finally/tst_finally.cpp<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/qpromise/map/map.pro<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/qpromise/map/tst_map.cpp<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/qpromise/operators/operators.pro<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/qpromise/operators/tst_operators.cpp<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/qpromise/qpromise.pro<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/qpromise/reduce/reduce.pro<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/qpromise/reduce/tst_reduce.cpp<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/qpromise/resolve/resolve.pro<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/qpromise/resolve/tst_resolve.cpp<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/qpromise/tap/tap.pro<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/qpromise/tap/tst_tap.cpp<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/qpromise/tapfail/tapfail.pro<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/qpromise/tapfail/tst_tapfail.cpp<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/qpromise/then/then.pro<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/qpromise/then/tst_then.cpp<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/qpromise/timeout/timeout.pro<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/qpromise/timeout/tst_timeout.cpp<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/qpromiseconnections/qpromiseconnections.pro<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/qpromiseconnections/tst_qpromiseconnections.cpp<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/qtpromise.pri<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/qtpromise.pro<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/requirements/requirements.pro<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/requirements/tst_requirements.cpp<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/shared/data.h<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/shared/object.h<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/shared/utils.h<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/thread/thread.pro<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/auto/qtpromise/thread/tst_thread.cpp<br />
kdevplatform/3rdparty/qtpromise/qtpromise-0.5.0/tests/tests.pro<br />
kdevplatform/CMakeLists.txt<br />
kdevplatform/shell/CMakeLists.txt<br />
kdevplatform/shell/project.cpp<br />
kdevplatform/shell/project.h<br />
kdevplatform/shell/projectcontroller.cpp<br />
kdevplatform/shell/tests/CMakeLists.txt</div></div></div><br /><div><strong>To: </strong>arrowd, KDevelop, mwolff<br /><strong>Cc: </strong>apol, kfunk, brauch, mwolff, kdevelop-devel, christiant, glebaccon, domson, antismap, iodelay, alexeymin, geetamc, Pilzschaf, akshaydeo, surgenight, arrowd<br /></div>