qt5base-lts/tests/auto/corelib/tools
Marc Mutz 6da6a17de9 Fix qHash(qfloat16) to match Qt 6.4 behavior
There were two problems:

- On platforms where QFLOAT16_IS_NATIVE == true, a qHash(qfloat16{})
  call has become ambiguous between the three FP qHash() overloads
  (float, double, long double), where it was unambiguously calling the
  float one in Qt 6.4. This SiC was caused by the replacement of
  operator float() by operator __fp16() in
  99c7f0419e, which is in Qt 6.5.

- On platforms where QFLOAT16_IS_NATIVE == false, qHash(qfloat16{})
  would produce a different value from qHash(float{}), and therefore
  Qt 6.4, when the seed was != 0, because the former would go via the
  one-arg-to-two-arg qHash adapter while the latter one would
  not. Since participating functions are inline, this causes old and
  new code to produce different hash values for the same qfloat16,
  leading to a BiC possibly corrupting QHash etc.

Fix both by adding an explicit qHash(qfloat16). This function is
inline, so it doesn't add a new symbol to 6.5.x.

[ChangeLog][QtCore] Fixed qHash(qfloat16) which was broken from 6.5.0
to 6.5.3, inclusive. If you compiled against one of the affected Qt
versions, you need to recompile against either Qt 6.4 or earlier or
6.5.4 or later, because the problematic code is inline.

Pick-to: 6.6 6.5
Fixes: QTBUG-116064
Fixes: QTBUG-116076
Change-Id: Id02bc29a6c3ec463352f4bef314c040369081e9b
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2023-09-12 21:12:50 +00:00
..
collections Mark all of Qt as free of Q_FOREACH, except where it isn't 2023-08-19 05:19:42 +00:00
containerapisymmetry CMake: Make corelib tests standalone projects 2023-07-05 15:09:32 +02:00
qalgorithms CMake: Make corelib tests standalone projects 2023-07-05 15:09:32 +02:00
qarraydata QArrayData: make calculateBlockSize() account for the extra null element 2023-09-03 17:43:24 -07:00
qatomicscopedvaluerollback QAtomicScopedValueRollback: fix CTAD for Q(Basic)AtomicPointer 2023-07-12 10:29:44 +02:00
qbitarray CMake: Make corelib tests standalone projects 2023-07-05 15:09:32 +02:00
qcache CMake: Make corelib tests standalone projects 2023-07-05 15:09:32 +02:00
qcommandlineparser CMake: Make corelib tests standalone projects 2023-07-05 15:09:32 +02:00
qcontiguouscache CMake: Make corelib tests standalone projects 2023-07-05 15:09:32 +02:00
qcryptographichash CMake: remove check for cxx11_future 2023-08-02 12:36:18 -07:00
qduplicatetracker CMake: Make corelib tests standalone projects 2023-07-05 15:09:32 +02:00
qeasingcurve tests/auto/: port Q_FOREACH to ranged-for, local const containers 2023-08-19 16:29:25 +03:00
qexplicitlyshareddatapointer tst_QExplicitlySharedDataPointer: Remove stray comment 2023-07-25 12:31:04 +02:00
qflatmap CMake: Make corelib tests standalone projects 2023-07-05 15:09:32 +02:00
qfreelist tst_QFreeList: build with QT_NO_FOREACH 2023-08-19 16:29:54 +03:00
qhash CMake: remove check for cxx11_future 2023-08-02 12:36:18 -07:00
qhashfunctions Fix qHash(qfloat16) to match Qt 6.4 behavior 2023-09-12 21:12:50 +00:00
qhashseed CMake: Make corelib tests standalone projects 2023-07-05 15:09:32 +02:00
qline CMake: Make corelib tests standalone projects 2023-07-05 15:09:32 +02:00
qlist QArrayDataPointer: remove Q_CHECK_PTR in assign(it, it) again 2023-09-07 15:05:05 +02:00
qmacautoreleasepool CMake: Make corelib tests standalone projects 2023-07-05 15:09:32 +02:00
qmakearray CMake: Make corelib tests standalone projects 2023-07-05 15:09:32 +02:00
qmap CMake: Make corelib tests standalone projects 2023-07-05 15:09:32 +02:00
qmargins CMake: Make corelib tests standalone projects 2023-07-05 15:09:32 +02:00
qmessageauthenticationcode CMake: Make corelib tests standalone projects 2023-07-05 15:09:32 +02:00
qoffsetstringarray CMake: Make corelib tests standalone projects 2023-07-05 15:09:32 +02:00
qpair CMake: Make corelib tests standalone projects 2023-07-05 15:09:32 +02:00
qpoint CMake: Make corelib tests standalone projects 2023-07-05 15:09:32 +02:00
qpointf CMake: Make corelib tests standalone projects 2023-07-05 15:09:32 +02:00
qqueue CMake: Make corelib tests standalone projects 2023-07-05 15:09:32 +02:00
qrect CMake: Make corelib tests standalone projects 2023-07-05 15:09:32 +02:00
qringbuffer CMake: Make corelib tests standalone projects 2023-07-05 15:09:32 +02:00
qscopedpointer CMake: Make corelib tests standalone projects 2023-07-05 15:09:32 +02:00
qscopedvaluerollback CMake: Make corelib tests standalone projects 2023-07-05 15:09:32 +02:00
qscopeguard tst_QScopeGuard: test if and how guard in optional<> works 2023-07-10 19:47:08 +00:00
qset CMake: Make corelib tests standalone projects 2023-07-05 15:09:32 +02:00
qsharedpointer CMake: Make corelib tests standalone projects 2023-07-05 15:09:32 +02:00
qsize CMake: Make corelib tests standalone projects 2023-07-05 15:09:32 +02:00
qsizef CMake: Make corelib tests standalone projects 2023-07-05 15:09:32 +02:00
qspan Long live QSpan! 2023-07-21 17:00:05 +00:00
qstl CMake: Make corelib tests standalone projects 2023-07-05 15:09:32 +02:00
qtaggedpointer CMake: Make corelib tests standalone projects 2023-07-05 15:09:32 +02:00
qtimeline CMake: Make corelib tests standalone projects 2023-07-05 15:09:32 +02:00
qvarlengtharray CMake: Make corelib tests standalone projects 2023-07-05 15:09:32 +02:00
qversionnumber CMake: Make corelib tests standalone projects 2023-07-05 15:09:32 +02:00
CMakeLists.txt Long live QSpan! 2023-07-21 17:00:05 +00:00