diff options
author | Frederik Gladhorn <frederik.gladhorn@digia.com> | 2013-12-05 17:42:33 +0100 |
---|---|---|
committer | Frederik Gladhorn <frederik.gladhorn@digia.com> | 2013-12-05 17:42:33 +0100 |
commit | 733ace5a7ad5b9e9f93ac87667d7d37fa5f894d5 (patch) | |
tree | a88031a8e1ac30986567070728e29ed1366d0962 /src/concurrent | |
parent | eaff48d3622bbb0e18e79f79aac6d1ac1b7e2760 (diff) | |
parent | 835b8213905b315645bc60ff5f2ab99340d075a2 (diff) |
Merge remote-tracking branch 'origin/release' into stable
Conflicts:
configure
mkspecs/macx-ios-clang/features/default_post.prf
tests/auto/widgets/widgets/qmenu/tst_qmenu.cpp
Change-Id: Iaba97eed2272bccf54289640b8197d40e22f7bf5
Diffstat (limited to 'src/concurrent')
-rw-r--r-- | src/concurrent/qtconcurrentmedian.h | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/concurrent/qtconcurrentmedian.h b/src/concurrent/qtconcurrentmedian.h index b39b3ed32b..ce2afb9c28 100644 --- a/src/concurrent/qtconcurrentmedian.h +++ b/src/concurrent/qtconcurrentmedian.h @@ -102,10 +102,19 @@ public: { if (dirty) { dirty = false; + +// This is a workaround for http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58800 +// Avoid using std::nth_element for stdlibc++ <= 4.7.3 || (>= 4.8.0 && <= 4.8.2) +#if defined(__GLIBCXX__) && (__GLIBCXX__ <= 20130411 || (__GLIBCXX__ >= 20130322 && __GLIBCXX__ <= 20131016)) + QVector<T> sorted = values; + std::sort(sorted.begin(), sorted.end()); + currentMedian = sorted.at(bufferSize / 2); +#else QVector<T> copy = values; typename QVector<T>::iterator begin = copy.begin(), mid = copy.begin() + bufferSize/2, end = copy.end(); std::nth_element(begin, mid, end); currentMedian = *mid; +#endif } return currentMedian; } |