[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