diff options
Diffstat (limited to 'src/corelib/text/qstringalgorithms.h')
-rw-r--r-- | src/corelib/text/qstringalgorithms.h | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/corelib/text/qstringalgorithms.h b/src/corelib/text/qstringalgorithms.h index 538ae892b0..71a1dbd526 100644 --- a/src/corelib/text/qstringalgorithms.h +++ b/src/corelib/text/qstringalgorithms.h @@ -178,12 +178,21 @@ lengthHelperContainer(const Char (&str)[N]) return lengthHelperContainerLoop(str); } +inline qsizetype qstrnlen_helper(const char *str, size_t maxlen) +{ +#if !defined(Q_COMPILER_SLOW_QSTRNLEN_COMPILATION) + return qstrnlen(str, maxlen); +#else + return strnlen_s(str, maxlen); +#endif +} + template <typename Char, size_t N> [[nodiscard]] constexpr inline std::enable_if_t<sizeof(Char) == 1, qsizetype> lengthHelperContainer(const Char (&str)[N]) { #ifdef QT_SUPPORTS_IS_CONSTANT_EVALUATED if (!q20::is_constant_evaluated()) - return qstrnlen(reinterpret_cast<const char *>(str), N); + return qstrnlen_helper(reinterpret_cast<const char *>(str), N); #endif return lengthHelperContainerLoop(str); |