From 983e93c3b160c62e60b1755d075e959d4685d949 Mon Sep 17 00:00:00 2001 From: Mikhail Svetkin Date: Mon, 29 Jun 2020 19:40:00 +0200 Subject: Fix linkage error in QFutureInterface::takeResult MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The error: QtPrivate::ExceptionStore::throwPossibleException already defined in QHttpServerFutureResponse. Task-number: QTBUG-85191 Change-Id: I055b2aa563cbde7d01309a01fa59d4283c9c2e36 Reviewed-by: MÃ¥rten Nordheim --- src/httpserver/qhttpserverfutureresponse.cpp | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'src/httpserver/qhttpserverfutureresponse.cpp') diff --git a/src/httpserver/qhttpserverfutureresponse.cpp b/src/httpserver/qhttpserverfutureresponse.cpp index 3d2784b..2409e6a 100644 --- a/src/httpserver/qhttpserverfutureresponse.cpp +++ b/src/httpserver/qhttpserverfutureresponse.cpp @@ -61,6 +61,33 @@ QT_BEGIN_NAMESPACE \endcode */ +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) + +QHttpServerResponse QFutureInterface::takeResult() +{ + if (isCanceled()) { + exceptionStore().throwPossibleException(); + return QHttpServerResponse::StatusCode::NotFound; + } + // Note: we wait for all, this is intentional, + // not to mess with other unready results. + waitForResult(-1); + +#if QT_VERSION < QT_VERSION_CHECK(5, 14, 0) + std::lock_guard locker{*mutex()}; +#else + std::lock_guard locker{mutex(0)}; +#endif + QtPrivate::ResultIteratorBase position = resultStoreBase().resultAt(0); + auto ret = std::move_if_noexcept( + *const_cast(position.pointer())); + resultStoreBase().template clear(); + + return ret; +} + +#endif // QT_VERSION < QT_VERSION_CHECK(6, 0, 0) + struct QResponseWatcher : public QFutureWatcher { Q_OBJECT -- cgit v1.2.3