diff options
author | Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> | 2021-01-17 19:07:48 +0100 |
---|---|---|
committer | Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> | 2021-01-19 22:35:17 +0100 |
commit | 790b600840920f8ac4f56af1e1232cd97ad510bd (patch) | |
tree | d259394df543fb8c83a1b374e6c9a3fd6c3f5fdf /src/corelib/global | |
parent | 813a928c7c3cf98670b6043149880ed5c955efb9 (diff) |
Mark qBadAlloc as [[noreturn]]
So that static analyzers don't get confused by its semantics.
In builds with exceptions disabled, it's not actually called
by client code (e.g. Q_CHECK_PTR will just terminate in that case),
but we still need to make it not return -- add another path that
callss std::terminate(), otherwise we'd have a noreturn function
returning.
Change-Id: Ia8c4ce3e9d971f1757e9c273051cb3dedf23c61f
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src/corelib/global')
-rw-r--r-- | src/corelib/global/qglobal.cpp | 4 | ||||
-rw-r--r-- | src/corelib/global/qglobal.h | 2 |
2 files changed, 5 insertions, 1 deletions
diff --git a/src/corelib/global/qglobal.cpp b/src/corelib/global/qglobal.cpp index 65c72d9abe..139c8f3a30 100644 --- a/src/corelib/global/qglobal.cpp +++ b/src/corelib/global/qglobal.cpp @@ -3098,7 +3098,11 @@ void qt_check_pointer(const char *n, int l) noexcept */ void qBadAlloc() { +#ifndef QT_NO_EXCEPTIONS QT_THROW(std::bad_alloc()); +#else + std::terminate(); +#endif } #ifndef QT_NO_EXCEPTIONS diff --git a/src/corelib/global/qglobal.h b/src/corelib/global/qglobal.h index fbadab4f3b..47ffe17034 100644 --- a/src/corelib/global/qglobal.h +++ b/src/corelib/global/qglobal.h @@ -921,7 +921,7 @@ Q_CORE_EXPORT void qt_assert_x(const char *where, const char *what, const char * #endif Q_NORETURN Q_CORE_EXPORT void qt_check_pointer(const char *, int) noexcept; -Q_DECL_COLD_FUNCTION +Q_NORETURN Q_DECL_COLD_FUNCTION Q_CORE_EXPORT void qBadAlloc(); #ifdef QT_NO_EXCEPTIONS |