[qt/qt/qtdeclarative]: Summary of bulk changes made

KDE Git Services - Bulk Change <[email protected]>
Newsgroups gmane.comp.kde.cvs
Message-ID <[email protected]>
Git repository change summary for qt/qt/qtdeclarative
Pushed by mirror-service into branch 'dev'.
Changed from 2246bedfd49906ac918bbb0452d4f835b020cc7a to abae97a8dc25474f59f80388cb573d1665a072ab
Acknowledgement was received that this change introduces only existing code that has been pushed to another public open source repository.

This change contains the following new commits:

Git commit 6fd46684e04c0ae897bf32a8b38d67ea62bb423c by Olivier De Cannière (on behalf of Jeff Heller) on 31/07/2026 at 16:03..
QmlCompiler: Fix qmllint exhausting memory on some QML files

merge(QQmlJSRegisterContent, QQmlJSRegisterContent) is tree-recursive:
both mergeScopes() calls in its return statement recurse into it, so
the same (a, b) pair is recomputed along 2^depth paths, allocating a
conversion each time.

Some inputs therefore make qmllint unusable rather than merely slow. On
one 613-line file it reached 313 GB and was OOM-killed after 622 s,
having emitted 36 of that file's 122 warnings.

Memoize merge() on the (a, b) pair, handing out an O(1) clone on a hit.

That shares more registers, but is safe:

- merge() is pure.
- The cache stores and returns clones, so no entry is reachable by
  anything that could edit it. Callers need that anyway: contents
  compare by identity, and mergeRegister() relies on a merge of two
  different contents being freshly tracked.
- Clones are shallow, but no pass edits a register deeper than one
  level. adjustType(), storeType() and generalizeType() only ever take
  a register handed to a pass, or its own storage()/original() chain.
- QQmlJSTypePropagator::run() clears the cache. It is the only caller,
  and the blowup is within one function.

The new test takes 2.3 GB and 11 s unmemoized, 26 MB and 0.03 s
memoized, doubling with every added line.

6.8 is unaffected: its scopes are QQmlJSScope::ConstPtr, so merge()
does not recurse into itself. 6.9 is the first affected branch.

Pick-to: 6.12 6.11
Change-Id: Id65649a837eef59d850b8b8a4ec0412244582488
Reviewed-by: Olivier De Cannière <[email protected]>
https://invent.kde.org/qt/qt/qtdeclarative/-/commit/6fd46684e04c0ae897bf32a8b38d67ea62bb423c

Git commit 6518f9d886ba657e5e3c98f17a891bb46b07ad3f by Sami Shalayel on 31/07/2026 at 16:03..
tst_qmlpreviewtool: add missing dependencies

Make the tst_qmlpreviewtool CMake target build qmlpreview and qml
if available. Also depend on the test helpers
This avoids running the test on outdated qmlpreview, qml, or test
helper binaries.

Change-Id: I98cf669f5210de7f380e68afc54c7b39c373934a
Reviewed-by: Alexandru Croitor <[email protected]>
Reviewed-by: Fabian Kosmale <[email protected]>
https://invent.kde.org/qt/qt/qtdeclarative/-/commit/6518f9d886ba657e5e3c98f17a891bb46b07ad3f

Git commit abae97a8dc25474f59f80388cb573d1665a072ab by Sami Shalayel on 31/07/2026 at 16:03..
qmlls: fix deprecation warning during compilation

It seems that globalMatch is deprecated in favour of globalMatchView.

Change-Id: Ic69f57da8095188aec770e2aa1a8feef7b0e5469
Reviewed-by: Olivier De Cannière <[email protected]>
https://invent.kde.org/qt/qt/qtdeclarative/-/commit/abae97a8dc25474f59f80388cb573d1665a072ab
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.