tst_bench_shared_ptr: fix build with BOOST_NO_EXCEPTIONS
If, for whatever reason, BOOST_NO_EXCEPTIONS is defined, the user of the Boost libraries is supposed to provide a definition of boost::throw_exception, which we didn't. We used to run into this only on ubsan builds, but it seems we now have the problem on a regular Ubuntu 22.04 build, too (cf. bugreport). Fix by adding the necessary definitions. Fixes: QTBUG-104083 Pick-to: 6.4 6.3 Change-Id: I9b061a158a5b77e8d286bd7b40312e5bc63ee8de Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
This commit is contained in:
parent
bf3fc5c95c
commit
882fc48b9e
@ -1,4 +1,5 @@
|
||||
// Copyright (C) 2021 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Marc Mutz <marc.mutz@kdab.com>
|
||||
// Copyright (C) 2022 The Qt Company Ltd.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
||||
|
||||
#include <QObject>
|
||||
@ -14,6 +15,18 @@
|
||||
#if __has_include(<boost/shared_ptr.hpp>)
|
||||
# include <boost/shared_ptr.hpp>
|
||||
# include <boost/make_shared.hpp>
|
||||
|
||||
# ifdef BOOST_NO_EXCEPTIONS
|
||||
// https://stackoverflow.com/a/9530546/134841
|
||||
// https://www.boost.org/doc/libs/1_79_0/libs/throw_exception/doc/html/throw_exception.html#throw_exception
|
||||
BOOST_NORETURN void boost::throw_exception(const std::exception &) { std::terminate(); }
|
||||
# if BOOST_VERSION >= 107300
|
||||
// https://www.boost.org/doc/libs/1_79_0/libs/throw_exception/doc/html/throw_exception.html#changes_in_1_73_0
|
||||
BOOST_NORETURN void boost::throw_exception(const std::exception &, const boost::source_location &)
|
||||
{ std::terminate(); }
|
||||
# endif // Boost v1.73
|
||||
# endif // BOOST_NO_EXCEPTIONS
|
||||
|
||||
# define ONLY_IF_BOOST(x) x
|
||||
#else
|
||||
# define ONLY_IF_BOOST(x) QSKIP("This benchmark requires Boost.SharedPtr.")
|
||||
|
Loading…
x
Reference in New Issue
Block a user