diff options
author | Marc Mutz <marc.mutz@qt.io> | 2023-09-14 18:22:12 +0200 |
---|---|---|
committer | Marc Mutz <marc.mutz@qt.io> | 2023-12-09 05:29:23 +0100 |
commit | 28f1eb6c838529675613f05f990255d3b0a22f3a (patch) | |
tree | 7fc362cc7a6572cd8768af1e5f4885802f5c56b1 /tests/auto/corelib/global/qglobal | |
parent | ecef7046245f3adee9366d3543e4ed2a09f65735 (diff) |
tst_QGlobal: work around ubsan issue in toString(qint128)
Found a problem on GCC 9.4 where asan/ubsan seems to break
std::numeric_limits<int128>::min():
runtime error: negation of 0x80000000000000000000000000000000 cannot be represented in type '__int128'; cast to an unsigned type to negate this value to itself
This is the -i _after_ we've already checked for ::min() two lines
above. It works with Q_INT128_MIN, though, so use that.
Pick-to: 6.6
Change-Id: I778980baf4e7eea9f8de06697d792241314acacd
Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Diffstat (limited to 'tests/auto/corelib/global/qglobal')
-rw-r--r-- | tests/auto/corelib/global/qglobal/tst_qglobal.cpp | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/tests/auto/corelib/global/qglobal/tst_qglobal.cpp b/tests/auto/corelib/global/qglobal/tst_qglobal.cpp index 6da78555cb..b7c45b6480 100644 --- a/tests/auto/corelib/global/qglobal/tst_qglobal.cpp +++ b/tests/auto/corelib/global/qglobal/tst_qglobal.cpp @@ -37,7 +37,7 @@ namespace detail { template <> char *toString(const qint128 &i) { - if (i == std::numeric_limits<qint128>::min()) // -i is not representable, hardcode: + if (i == Q_INT128_MIN) // -i is not representable, hardcode: return qstrdup("-170141183460469231731687303715884105728"); std::array<char, 64> buffer; auto dst = detail::i128ToStringHelper(buffer, i < 0 ? -i : i); |