Go to file
Thiago Macieira 04dc959d49 Introduce Q{Json,Cbor}ValueConstRef
I screwed up when I wrote QCborValueRef by not having the ConstRef
type. The code worked, but it wasn't const-correct, allowing you to
write:

  const QCborArray &arr = something();
  *arr.begin() = QCborArray();

This mistake was brought over to QJsonValue in Qt 6.0, so it has to be
fixed for QJsonValue too. The actual fixes are in the next couple of
commits.

This change is believed to be binary-compatible: the Q{Json,Cbor}ValueRef
classes continue to have the exact same size, except that they're now
empty and have a new base class. They weren't trivial before this commit
doesn't change that.

[ChangeLog][Potentially Source-Incompatible Changes] The iterator
classes for Qt's JSON and CBOR containers (array and map/object) had a
const correctness issue which allowed a const_iterator to mutate the
container being iterated on, even if that container was itself const. Qt
6.4 has a fix for this, but will cause compilation issues where
QCborValueRef and QJsonValueRef were used where the correctness could be
violated. To keep code compiling with both 6.3 and 6.4, either change to
non-const iteration or replace the QxxxValueRef with a const QxxxValue
reference. This change is binary-compatible.

Change-Id: I5e52dc5b093c43a3b678fffd16b6063333765ae0
Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io>
2022-02-15 17:00:03 -08:00
.github/workflows Repair github action workflow 2021-11-10 18:57:33 +01:00
bin Provide a qtpaths wrapper script when cross-building Qt 2021-11-08 13:41:03 +01:00
cmake CMake: Introduce QT_ADDITIONAL_HOST_PACKAGES_PREFIX_PATH 2022-02-15 14:48:20 +01:00
coin Clean up QNX platform configs and improve testrunner scripts 2022-02-14 12:56:06 +01:00
config.tests CMake: remove unused config.tests (atomicfptr, avx512 and stl) 2022-02-15 09:20:34 -03:00
dist Add Qt 6.0.0 changes file 2020-11-16 10:02:08 +02:00
doc qglobal: add a way to selectively export in Qt 6 XOR Qt 7 2022-02-09 10:49:37 -08:00
examples qtextstream.h: streamline includes 2022-02-10 04:34:13 +01:00
lib
libexec Fix various configure time warnings about missing QT_BEGIN_NAMESPACE 2021-11-01 17:17:29 +02:00
mkspecs Update MSVC qmake mkspecs to make -std:c++20 available for VS2019 16.11+ 2022-02-11 22:05:20 +00:00
qmake QLibraryInfo: remove load-time variable 2022-02-05 11:57:34 -08:00
src Introduce Q{Json,Cbor}ValueConstRef 2022-02-15 17:00:03 -08:00
tests Introduce Q{Json,Cbor}ValueConstRef 2022-02-15 17:00:03 -08:00
util Clean up QNX platform configs and improve testrunner scripts 2022-02-14 12:56:06 +01:00
.cmake.conf Bump version to 6.4.0 2022-01-31 17:20:06 +02:00
.gitattributes Give batch files CRLF line endings 2020-11-04 15:02:29 +00:00
.gitignore Assume qhelpgenerator in libexec instead of bin 2021-11-08 19:27:32 +01:00
.lgtm.yml Skip LGTM analysis for the bootstrap library and tools 2020-07-16 01:04:34 +02:00
.tag
CMakeLists.txt Use REALPATH based check for symbolic links on Windows 2022-01-07 14:31:38 +01:00
conanfile.py Use common install functionality 2022-02-04 19:19:19 +02:00
config_help.txt configure: Introduce -submodules option 2022-02-03 21:21:29 +01:00
configure Remove unsupported, host-related options from configure shell script 2021-08-05 02:44:27 +02:00
configure.bat configure: Fix -redo when configure line contained equal sign(s) 2022-02-15 08:08:48 +00:00
configure.cmake GHS compiler doesn't support signaling NaNs for double 2022-02-09 16:33:46 +02:00
dependencies.yaml Re-add dependencies.yaml now that qt5.git wip/qt6 builds fine 2019-09-18 13:19:31 +02:00
LICENSE.FDL Remove trailing whitespace in LICENSE.FDL 2021-11-26 18:28:49 +01:00
LICENSE.GPL2
LICENSE.GPL3
LICENSE.GPL3-EXCEPT
LICENSE.LGPL3
LICENSE.QT-LICENSE-AGREEMENT Update latest qt license agreement 2021-12-02 14:16:49 +00:00
qt_cmdline.cmake CMake: Add support building Qt with the 'mold' linker 2022-01-20 19:01:27 +01:00
sync.profile Implement generating of a module cpp export header 2021-06-24 20:40:49 +02:00