summaryrefslogtreecommitdiffstats
path: root/src/corelib/tools
Commit message (Collapse)AuthorAgeFilesLines
...
* QLine: swap IntersectType and IntersectionTypeEdward Welbourne2020-08-282-12/+6
| | | | | | | | | | | Make IntersectionType the enum and the obsolete IntersectType an alias, with at least a comment to say it's deprecated. Adjust the docs to match. Task-number: QTBUG-85700 Change-Id: I0de9166b0d936f5b9a15fdd4f90cf7b01198e8d7 Reviewed-by: Konstantin Shegunov <kshegunov@gmail.com> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Purge qalgorithm.h of deprecated APIEdward Welbourne2020-08-282-1023/+6
| | | | | | | | | | | | | A large slice of it has been deprecated since 5.2. Reflowed a doc paragraph pointed out, in the deprecation commit, as having been left ragged by its edits. Note: qSwap() is documented as \deprecated but not marked, where it's defined, as deprecated. Change-Id: Iaff10ac0c4c38e5b85f10eca4eedeab861f09959 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Remove QTimeLine's curveShapeEdward Welbourne2020-08-282-101/+1
| | | | | | | | | | | Deprecated in 5.15.1, removed in Qt 6. It is entirely redundant with easingCurve, which has been there since 4.6. Task-number: QTBUG-85520 Change-Id: Ib1daa322a17da390dd264ed8d48ac572138a5d84 Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io> Reviewed-by: hjk <hjk@qt.io> Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* Change QByteArray to handle large arraysLars Knoll2020-08-271-3/+1
| | | | | | | | | | Use qsizetype throughout. Change-Id: I787af7fcfa17e1be87decb64c41c609cc24be117 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: Oliver Wolff <oliver.wolff@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Update allocation interface of QArrayDataPointerAndrei Golubev2020-08-273-8/+11
| | | | | | | | | | | | | Added overload to allocGrow that figures the capacity to allocate from the newSize argument passed. This is useful in QList (and likely in other places) Fixed QArrayPodOps::reallocate as a drive by: don't call memmove when it is not needed Task-number: QTBUG-84320 Change-Id: I67efe55a60efaf3ab6057b0249d6a446e04a09e3 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Make *ArrayOps::createInPlace protectedAndrei Golubev2020-08-271-5/+12
| | | | | | | | | | No user of QArrayDataPointer functionality must use createInPlace. This is a special function to be called by the internal logic. It's usage is unsafe with prepend optimization in place Task-number: QTBUG-84320 Change-Id: Idc0e82975a98e799272bdb61fe7828b3c8c67e8d Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Support GrowsBackwards prepend in QListAndrei Golubev2020-08-271-12/+10
| | | | | | | | | | | | | Restored previously deleted logic of setting GrowsBackwards flag for prepend-like cases. This should be sufficient to fully enable prepend optimization Fixed QList::emplace to not use implementation detail logic. Updated tests to cover changed behavior and its correctness Task-number: QTBUG-84320 Change-Id: I4aadab0647fe436140b7bb5cf71309f6887e36ab Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io>
* Add prepend optimization to QCommonArrayOpsAndrei Golubev2020-08-272-52/+449
| | | | | | | | | Introduced prepend optimization logic to QCommonArrayOps. Trying to rely on original QList behavior Task-number: QTBUG-84320 Change-Id: I46e6797b4edad804a3e3edb58307c9e96990fe01 Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io>
* Support GrowsBackwards flag in QArrayDataPointerAndrei Golubev2020-08-274-13/+104
| | | | | | | | | | | | | | | | | | | | | | | | | | Introduced allocation function in QArrayDataPointer with interface similar to QArrayData::allocate that supports growing strategies. This func is used instead of the original in cases when prepend-aware storage is needed. Tried to follow Qt5 QList policy in terms of space reservation Updated QPodArrayOps::reallocate to be aware of growing shenanigans. It doesn't look like a perfect solution but it is rather close and similar to what Qt6 QList is doing when not growing (e.g. reserve/squeeze) Added initial QCommonArrayOps with helper function that tells when reallocation is preferable over just using the insert-like operation. This comes up later on when GrowsBackwards policy is properly supported in operations Essentially, 2/3 main data management blocks for prepend optimization are introduced here. The last one being a generalized data move that is done instead of reallocation when existing free space is not enough Task-number: QTBUG-84320 Change-Id: I9a2bac62ad600613a6d7c5348325e0e54aadb73d Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Smart pointers: port to explicit operator boolGiuseppe D'Angelo2020-08-262-14/+4
| | | | | | | | | | | | | Enough with the restricted bool trick; use the established solution. [ChangeLog][Potentially Source-Incompatible Changes] QScopedPointer, QSharedPointer and QWeakPointer's conversion operator towards bool is now explicit. In some cases this may require an explicit cast towards bool that was not needed before (notably, when returning an object of these types from a function that actually returns bool). Change-Id: I02b89278e75b7e7493ee7e35460504719e00f028 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Cleanup QTypeInfoLars Knoll2020-08-263-8/+8
| | | | | | | | | | | | | | | Remove QTypeInfo::isStatic, as that's not used anymore in Qt 6. Also remove sizeOf, it's unused, and we have QMetaType for that if required. Remove all typeinfo declaractions for trivial types, as the default template covers them correctly nowadays. Finally set up a better default for isPointer, and do some smaller cleanups all over the place. Change-Id: I6758ed37dfc701feaaf0ff105cc95e32da9f9c33 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Port QSet to qsizetypeUlf Hermann2020-08-251-6/+6
| | | | | Change-Id: I70ad8fb6908ce3837a723e9a095bee5c166739e4 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* QLineF: Don't try calculating a unit vector when length is nullRobert Loehning2020-08-252-4/+8
| | | | | | | | | | It's undefined and causes a division by zero. Fixes: oss-fuzz-24561 Pick-to: 5.12 5.15 Change-Id: Idebaba4b286e3ab0ecb74825d203244958ce6aec Reviewed-by: hjk <hjk@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Deprecate the static int based API in QMetaTypeLars Knoll2020-08-241-2/+3
| | | | | | | | | | | | | And remove one of the type id to name mapping that still existed in QMetaType. QMetaTypeInterface can provide that, so there's no need to have a second copy of the data. qMetaTypeTypeInternal() can still map all the names of all builtin types to ids. That functionality is for now still required by moc and can't be removed yet. Change-Id: Ib4f8e9c71e1e7d99d52da9e44477c9a1f1805e57 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Automatically register data/debug stream operations in QMetaTypeLars Knoll2020-08-241-0/+2
| | | | | | | | | | | | | | | | | | | | | | And remove the old manual registration code for those operators. Add some special handling for long/ulong, as these types could be streamed as a QVariant so far, but are not directly streamable through QDataStream. [ChangeLog][QtCore][QMetaType] The QMetaType::registerStreamOperators() and QMetaType::registerDebugStreamOperator() methods have been removed. The streaming operators for a type are now automatically registered together with the type registration. This implies that the operators should be visible wherever the type is visible and being used. [ChangeLog][Behavior Incompatible Changes] Because the QDataStream and QDebug serialization operators are automatically registered with QMetaType, the declarations of those functions must be present at any point where the type is used with QMetaType and QVariant. Change-Id: I4a0732651b20319af4a8397ff90b848ca4580d99 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* QLineF::intersects(): Make the output parameter optionalSze Howe Koh2020-08-231-1/+1
| | | | | | Change-Id: I1ccd290a81b38db2e86958fa8ce188878484dcc4 Reviewed-by: Konstantin Shegunov <kshegunov@gmail.com> Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Fix mistake in AESHASH algorithmAllan Sandfeld Jensen2020-08-231-2/+2
| | | | | | | The read data wasn't encoded into the state correctly. Change-Id: Ib0a3b50bfeb56968de5c5e8353b28383cb586271 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Fix truncation warning in qversionnumber.hMarcel Krems2020-08-231-1/+1
| | | | | | | qversionnumber.h(390): warning C4310: cast truncates constant value Change-Id: I26f525db84d1c3691d9ac3f91f67be0bc4034b41 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Fix a number of qdoc warningsFriedemann Kleint2020-08-202-17/+1
| | | | | | | | | | | - Remove obsolete functions and enumeration values - Remove QObject * parameter from QMetaProperty accessors - Fix renamed enumerations in QSsl - Fix list items to be \li - Fix function signatures and variable names Change-Id: I37c7e6bf2c8ff92bc7b82620bae0a27796f866ab Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* Move QStringRef and remains to Qt5CompatKarsten Heimrich2020-08-202-11/+0
| | | | | | | | | Export some private functions from QUtf8 to resolve undefined symbols in Qt5Compat after moving QStringRef. Task-number: QTBUG-84437 Change-Id: I9046dcb14ed520d8868a511d79da6e721e26f72b Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Port QXmlStreamReader from QStringRef to QStringViewKarsten Heimrich2020-08-191-0/+1
| | | | | | | | | | | Use the new QtPrivate::XmlString class as the container holding the string data internally. It basically a "QStringRef lite", purely used in the implemntation. This replaces all usages of QStringRef in the parser. Fixes: QTBUG-84318 Change-Id: I557bbc6831301866602586d11d53283affd034a8 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Introduce GrowsBackwards case operationsAndrei Golubev2020-08-191-0/+302
| | | | | | | | | | | | | | | | Added operation overloads based on GrowsBackwards flag to array data ops "New" operations can be considered as mirrored to original special cases where near-begin (free)space is used instead of near-end space The newly added functions are not used anywhere in this commit. Yet there is enough code to consider a separate review for the operations along with tag dispatch approach used Task-number: QTBUG-84320 Change-Id: Ie57d97fcc6beeaf5cce6820b38702e376c431c0e Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QMultiMap: fix regression in find(Key, T)Giuseppe D'Angelo2020-08-191-5/+12
| | | | | | | | | | | | | | | | | | | 1) Implementing the const version in terms of the non-const version exposes to accidental detaches. Avoid that. 2) The non-const version has to detach, just like find(Key), or doing a comparison like find(Key, T) != end() might report a wrong result. 3) Properly check if the value was found by checking find_if's return value (against its second parameter, the end of the iterated range). If the value was NOT found, then return the map's end() (again because clients of find() will check against end()). Change-Id: I03533e89f1e7a52ad888d159d78f38002765953c Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* QMultiMap: fix remove(Key, T) when key/value belong to the mapGiuseppe D'Angelo2020-08-191-3/+9
| | | | | | | | | | | | | | Just like any other container, it's legitimate for the user to pass key/values belonging to the same container. Q(Multi)Map::remove(Key) are already safe (either they call erase() directly on std::(multi)map, where it does the right thing, or they skip elements while detaching). However, QMultiMap::remove(Key, T) wasn't safe in this regard (the implementation is hand rolled), so take copies before start erasing. Change-Id: I87767d608b83216a6ff264fb6c8f145fdb5934f8 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Add QArrayDataPointer::freeSpace*() functionsAndrei Golubev2020-08-184-27/+49
| | | | | | | | | | | | | Added functions that tell how much free space is available at the beginning and at the end of the storage Updated preconditions of operations to use freeSpace* functions Also, changed casts uint(this->size) to size_t(this->size) Task-number: QTBUG-84320 Change-Id: Iad94c1060a00f62068da9d1327e332a00d4f4109 Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io>
* Reorder operations to align with exception model in qarraydataops.hAndrei Golubev2020-08-181-9/+18
| | | | | | | | Fixed order of certain operations to better handle situations when exceptions occur Change-Id: Ia2075c37b4b7653067dfa6a82252cbb12b96708f Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Separate exception safety primitives from operationsAndrei Golubev2020-08-181-195/+189
| | | | | | | | | | | | | | | | | | | Refactored certain bits of qarraydataops.h: picked exception-related building blocks and put them into one place, (somewhat) documented the usage, added tests Personally, the existing code seemed rather complicated to analyze (and do mental experiments for corner cases), especially when staring at the whole thing for a while or "returning back" from some other work and I still have my doubts that everything works correctly. Testing the building blocks that are used should: a) increase trust into existing code (provided the usage is correct) b) give more use cases of how to use the building blocks, which in turn would allow to compare and contrast tests vs implementation Task-number: QTBUG-84320 Change-Id: I313a1d1817577507fe07a5b9b7d2c90b0969b490 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Refactor array data operationsAndrei Golubev2020-08-181-99/+46
| | | | | | | | | | | Replaced copyAppend implementations with insert(this->end()) where possible. This forced an update of the preconditions in insert Unified moveAppend between generic and movable operations Change-Id: I388c14436e32152ebb969bdd94753ed5452c1b7c Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Refine precoditions and logic of array operationsAndrei Golubev2020-08-181-8/+8
| | | | | | | | | | | | | | | | Updated insert() methods: * Refined Q_ASSERT() checks * Fixed implementation issues (some of which resulted in actual crashes) * Allowed to insert at the end. This is safe as far as I can tell and actually would allow to simplify considerable chunks of code (mainly, copyAppend versions to just return insert at the end) Updated tests accordingly Change-Id: I0ba33ae5034ce8d5ff95b753894e95d71ba00257 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QCache: Fix the usage of std::is_nothrow_assignable_vMartin Storsjö2020-08-181-1/+1
| | | | | | | | | | The std::is_nothrow_assignable_v template takes two template parameters. Current clang nightly errors out on the previous code, while earlier versions, and GCC, fail to diagnose the missing template parameter. Change-Id: I8ae7d5b9a9e89c5579e5526fb29d4da5cd1ab859 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Replace Qt CONSTEXPR defines with constexprAllan Sandfeld Jensen2020-08-1410-597/+597
| | | | | | | | Both normal and relaxed constexpr are required by our new minimum of C++17. Change-Id: Ic028b88a2e7a6cb7d5925f3133b9d54859a81744 Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io>
* QQueue: purge deprecated API, swap(i, j)Edward Welbourne2020-08-141-5/+0
| | | | | | | | Was deprecated in 5.14 although the relevant annotations won't show up until 5.15.1. Change-Id: I5b88bd109b9785d8170c616c619d478969536bbf Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Another round of using noexcept instead of pre-C++11 definesAllan Sandfeld Jensen2020-08-131-1/+1
| | | | | | | A few new files were added with old-school defines. Change-Id: Ieb2c71e094e55102f3f39fb9551823f36863f5f4 Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* QMultiMap: add constructors from QMapGiuseppe D'Angelo2020-08-102-0/+44
| | | | | | | | | | | We can provide those. They don't lose information, do not have the problem we face at offering ranged constructors (namely the order of duplicate keys), and have a distinct advantage over ranged constructors: a non-shared rvalue QMap can be "upgraded" to a QMultiMap without allocating memory for the multimap. Change-Id: Ic23c83927c05a210bc1f0050006c9f26365d3916 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Improve QMultiMap docs a bitGiuseppe D'Angelo2020-08-101-1/+8
| | | | | Change-Id: I170dc5de15dac61620aaed94f32226c158092dce Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* Fix compilation in C++20 modeAllan Sandfeld Jensen2020-08-081-6/+12
| | | | | | | | The comparisons with pointer were ambiguous as the comparisons could be done between iterators or pointers. Change-Id: I0484946931502d04bd63519fcd6e886c732758d3 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QQueue: clean up 5.14's deprecationEdward Welbourne2020-08-071-5/+5
| | | | | | | | | | | Follows up on commit 9dc1edb3146e2ffd85c357f950a83751ef265549, giving the relevant advice on what to use instead and protecting with the appropriate version-check deprecation macro. Pick-to: 5.15 Change-Id: I4191493e6c43448c4390bf22be1571611b172950 Reviewed-by: hjk <hjk@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* QSharedData: remove #include relating to deprecationEdward Welbourne2020-08-071-4/+1
| | | | | | | | The header pulled in qhash.h for no readily apparent reason. It did so subject to deprecation #if-ery, so rip it out. Change-Id: I00529dd2b2de11d9a997b6fa766901f5b2f4b254 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* QMap/QMultiMap: use =default for their default constructorsGiuseppe D'Angelo2020-08-071-2/+2
| | | | | Change-Id: I48e5bd8367fc6040128a50cd08c803310d3a4507 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QMultiMap: add range eraseGiuseppe D'Angelo2020-08-063-48/+82
| | | | | | | | Also remove duplication by centralizing the main code for erase(), and implement erase(pos) in terms of erase(first, last). Change-Id: Ie0272ebac92fd7da48c31f9d68e69a2faa583bbc Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QMap: fix insert() rvalue overloadsGiuseppe D'Angelo2020-08-061-0/+12
| | | | | | | | Receiving an rvalue still requires to check whether the parameter is detached, otherwise we can't steal its backing std::map. Change-Id: Ie88dbf39fd777112ad7bb20a46d5c2d65be8eb3d Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Long Live QMap as a refcounted std::map!Giuseppe D'Angelo2020-08-065-1963/+2828
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ... and QMultiMap as std::multimap. Just use the implementation from the STL; we can't really claim that our code is much better than STL's, or does things any differently (de facto they're both red-black trees). Decouple QMultiMap from QMap, by making it NOT inherit from QMap any longer. This completes the deprecation started in 5.15: QMap now does not store duplicated keys any more. Something to establish is where to put the QExplictlySharedDataPointer replcement that is in there as an ad-hoc solution. There's a number of patches in-flight by Marc that try to introduce the same (or very similar) functionality. Miscellanea changes to the Q(Multi)Map code itself: * consistently use size_type instead of int; * pass iterators by value; * drop QT_STRICT_ITERATORS; * iterators implictly convert to const_iterators, and APIs take const_iterators; * iterators are just bidirectional and not random access; * added noexcept where it makes sense; * "inline" dropped (churn); * qMapLessThanKey dropped (undocumented, 0 hits in Qt, 1 hit in KDE); * operator== on Q(Multi)Map requires operator== on the key type (we're checking for equality, not equivalence!). Very few breakages occur in qtbase. [ChangeLog][Potentially Source-Incompatible Changes] QMap does not support multiple equivalent keys any more. Any related functionality has been removed from QMap, following the deprecation that happened in Qt 5.15. Use QMultiMap for this use case. [ChangeLog][Potentially Source-Incompatible Changes] QMap and QMultiMap iterators random-access API have been removed. Note that the iterators have always been just bidirectional; moving an iterator by N positions can still be achieved using std::next or std::advance, at the same cost as before (O(N)). [ChangeLog][Potentially Source-Incompatible Changes] QMultiMap does not inherit from QMap any more. Amongst other things, this means that iterators on a QMultiMap now belong to the QMultiMap class (and not to the QMap class); new Java iterators have been added. Change-Id: I5a0fe9b020f92c21b37065a1defff783b5d2b7a9 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* MSVC: remove the extern templateThiago Macieira2020-08-051-15/+0
| | | | | | | | | | | | The problem was that QtCore exported those classes deriving from containers, which caused applications to try and import those same functions from QtCore, depending on whether they saw the #include or not. Now we don't need the hack anymore. Change-Id: I0a103569c81b4711a649fffd14ec9282454a1fdc Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Fix "rectange" typos in qtbaseOliver Wolff2020-08-051-2/+2
| | | | | | Pick-to: 5.15 Change-Id: If064fae5eaaeb2e53e3dd05cb9dc1cdf49ad1f04 Reviewed-by: Rainer Keller <Rainer.Keller@qt.io>
* Add an AES-based qHash function, inspired on Go'sThiago Macieira2020-08-041-0/+137
| | | | | Change-Id: I09100678ff4443e6be06fffd1481e94089c47799 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* QList: properly declare operator== for MSVCGiuseppe D'Angelo2020-08-041-16/+22
| | | | | | | | | | | | | | | | The operators were declared as friend function templates (so, free functions in the Qt namespace). Unfortunately, the template argument of the operators was also defaulted -- causing MSVC trying to instantiate those functions at all times, causing interesting recursive template instantiation errors (C2968). It's extremely likely that we're facing a MSVC bug, but work around it by not defaulting the template argument. This in turn requires to move the function definition outside QList's definition, otherwise an extern template definition (like the ones we have for QList<QPoint>) would cause a template redefinition error... Change-Id: If03477ac1fa0a72aa252bb9e08e2a19c2b517b1b Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Fix -Wshadow warningsGiuseppe D'Angelo2020-08-041-2/+2
| | | | | | | Turns out headersclean doesn't run on this header... Change-Id: Ice8691dc0b4b46b2bde38467ca398b61b569a769 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Add qHash implementations for QRect and QSizeShawn Rutledge2020-08-042-0/+12
| | | | | | | We need them to implement qHash for QQuickPixmapKey. Change-Id: Ia67de25ec0068b9e1b889bc9c6ee077e24eb71a8 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* QList: Add a append(QList &&) overloadMårten Nordheim2020-08-012-0/+64
| | | | | | | | We already had append(const QList &) and now there's an overload taking an rvalue reference. Change-Id: Id2fbc6c57badebebeee7b80d15bb333270fa4e19 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Fix undefined use of memcpy and memcmpAllan Sandfeld Jensen2020-07-311-1/+2
| | | | | | | Don't call them on a nullptr, even with a length of 0. Change-Id: I7fee23303562e5771697a16365cae12e3e87af6f Reviewed-by: Lars Knoll <lars.knoll@qt.io>