On Thursday, 2 July 2020 02:12:32 PDT Mathias Hasselmann wrote: > Am 01.07.2020 um 23:21 schrieb Thiago Macieira: > > Re: https://bugreports.qt.io/browse/QTBUG-84739 > > Summary: Qt 5.15 has an unintentional change in behaviour that has broken > > > > existing applications. We need to decide whether to: > > a) leave as-is > > b) revert permanently > > c) revert for 5.15.x but keep the new behaviour in 6.x > > How about: > > d) Follow the C++ trend of banning implicit conversions and make the > function fail for all input that is as underspecified as a QByteArray.
We can probably do this for QCborValue::fromVariant in Qt 6, since there aren't many people using it. QJsonValue::fromVariant might cause the same headache. There are other types that badly convert too. Take, for example, QMetaType::ULongLong. You'll agree with me that it's useful to permit converting quint64(0), so it shouldn't be a banned conversion. But what happens to QUINT64_C(1) << 63 ? In Qt 5.15, that number is too big for int, so it's stored as a double and no precision is lost. When you serialise it, you get "9223372036854775808". In Qt 6.0, because we added support for 64-bit *signed* integers, that number first gets converted to signed, which means it becomes negative. When you serialise it, you get "-9223372036854775808". That's the opposite (literally) of what you wanted. -- Thiago Macieira - thiago.macieira (AT) intel.com Software Architect - Intel System Software Products _______________________________________________ Development mailing list [email protected] https://lists.qt-project.org/listinfo/development
