[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 '6.11'.
Changed from 9514427067d44f6f0b4ce4cc61f75a2ab7d0640f to 40608a60eaa79c01517dd68a84ed2481ac66520e
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 72122e016bc4359fb5b582bd16c7ec3e34370dd4 by Qt Cherry-pick Bot (on behalf of Jeff Heller) on 03/08/2026 at 19:06..
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.

Change-Id: Id65649a837eef59d850b8b8a4ec0412244582488
Reviewed-by: Olivier De Cannière <[email protected]>
(cherry picked from commit 6fd46684e04c0ae897bf32a8b38d67ea62bb423c)
Reviewed-by: Jeff Heller <[email protected]>
(cherry picked from commit db1629f132c65377bdd49ee9d083319286ca9b9f)
Reviewed-by: Qt Cherry-pick Bot <[email protected]>
https://invent.kde.org/qt/qt/qtdeclarative/-/commit/72122e016bc4359fb5b582bd16c7ec3e34370dd4

Git commit 1fe232ee221c83d64263e52d550ce66e81039088 by Qt Cherry-pick Bot (on behalf of Sami Shalayel) on 03/08/2026 at 19:06..
qmlls: don't print out qml file content to log on each key stroke

Don't print out the qml file content to the log everytime the file
changed, this spams the log and potentially leads to very big logs.
Also, customers might not know that logs contain their (potentially
confidential) code and might post logs publicly online on the qt bug
tracker for example.

Change-Id: Ic18b5937079f6d170a58e2d479e965f355685abb
Reviewed-by: Ulf Hermann <[email protected]>
(cherry picked from commit 2c7f95f4890cc4f1ae0f1d151628393b5721c702)
Reviewed-by: Olivier De Cannière <[email protected]>
(cherry picked from commit 952ba4c3087404d75e5fb7c96035b1dca36ea0e0)
Reviewed-by: Qt Cherry-pick Bot <[email protected]>
https://invent.kde.org/qt/qt/qtdeclarative/-/commit/1fe232ee221c83d64263e52d550ce66e81039088

Git commit 9ccb439b34860c18797d37f97ffcaea0abda504a by Qt Cherry-pick Bot (on behalf of Assam Boudjelthia) on 03/08/2026 at 19:06..
FolderListModel: support Android content:// folders

A folder chosen through the Android system picker arrives as
a content URL whose authority names the documents provider
that serves it. Three places in FolderListModel mishandled
that URL.

resolvePath() rebuilt the path from the URL path component
alone, which drops the authority and collapses the scheme to
a single slash, so the content file engine could not resolve
it and the model stayed empty. Keep the URL whole when it
carries an authority.

parentFolder() ran the same path surgery and returned a bogus
file URL for a content folder. Only a local folder has a
string derivable parent, so return an empty URL otherwise.

indexOf() built its lookup from toLocalFile(), which is empty
for a content URL, so content entries were never matched. Use
urlToLocalFileOrQrc() instead.

Plain file and qrc folders carry no authority and keep the
existing handling throughout.

Pick-to: 6.8
Fixes: QTBUG-90761
Fixes: QTBUG-109990
Change-Id: Iee3db45b4dc5b1af703340f229480e795fe4c1f2
Reviewed-by: Ville Voutilainen <[email protected]>
(cherry picked from commit 4d92357160c5364fc04ad4f06410557d39c04483)
Reviewed-by: Qt Cherry-pick Bot <[email protected]>
(cherry picked from commit 4e103f6cbf14c2997c7d32f94aecf33fe1e52fb2)
https://invent.kde.org/qt/qt/qtdeclarative/-/commit/9ccb439b34860c18797d37f97ffcaea0abda504a

Git commit 2d34bbf2fb3f8bc38c37603594e0ed2f44af153f by Qt Cherry-pick Bot (on behalf of Assam Boudjelthia) on 03/08/2026 at 19:06..
Android: simplify view null check in getViewAndRootObject

Use a plain null check instead of Q_LIKELY on the view pointer.
The handle is already guarded before rootObject() is dereferenced.

Fixes: QTBUG-148447
Change-Id: I5a1ffe74c3ef0833444a0a63fe3805ba716abf1b
Reviewed-by: Soheil Armin <[email protected]>
(cherry picked from commit 39d0d81492268732689a86d2e23e5e0ef4204980)
Reviewed-by: Qt Cherry-pick Bot <[email protected]>
(cherry picked from commit af83a2acc2e7055295188c6711534b79259a3b56)
https://invent.kde.org/qt/qt/qtdeclarative/-/commit/2d34bbf2fb3f8bc38c37603594e0ed2f44af153f

Git commit 40608a60eaa79c01517dd68a84ed2481ac66520e by Qt Cherry-pick Bot (on behalf of Assam Boudjelthia) on 03/08/2026 at 19:06..
TextDocument: save to Android content:// URLs

TextDocument could load a document from a content URL but
could not save it back. writeTo() resolved the path with
toLocalFile(), which is empty for a content URL, and saveAs()
rejected anything that was not a local file. So a document
opened through the Android picker could be edited but never
saved.

Resolve the path with urlToLocalFileOrQrc() so QFile writes
it through the content file engine, and let saveAs() accept a
content URL as a writable target. A URL without write access
still fails, now with an accurate write error rather than a
misleading one.

The sourceAndSave test copies its data from a read only qrc
resource on Android, where the copy stays read only, so make
it writable before saving back to it.

Pick-to: 6.8
Change-Id: I50514ae87d039b67c13834755ca47addf6fe7f9a
Reviewed-by: Ville Voutilainen <[email protected]>
(cherry picked from commit 1fe8177156e68666ca128470e6c126fa857d81ce)
Reviewed-by: Qt Cherry-pick Bot <[email protected]>
(cherry picked from commit 6c2c9f1aab13845d7c61120f1658a0d1e1567259)
https://invent.kde.org/qt/qt/qtdeclarative/-/commit/40608a60eaa79c01517dd68a84ed2481ac66520e
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.