[qt/qt/qtbase]: Summary of bulk changes made
KDE Git Services - Bulk Change <[email protected]> Tue, 4 Aug 2026 12:16:06 +0000 (UTC)
| Newsgroups | gmane.comp.kde.cvs |
|---|---|
| Message-ID | <[email protected]> |
Git repository change summary for qt/qt/qtbase Pushed by mirror-service into branch '6.12'. Changed from db406557ae5ac393bd700f552214d950a4801bd8 to c975fe85b28ecc4ecdeb0d2b16b3df93076b0533 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 320ad948cd5ffacf20df0ac4c324c60e8dec1b6d by Qt Cherry-pick Bot (on behalf of Marc Mutz) on 04/08/2026 at 03:14.. QRhiVulkan: shrink frame size of printDeviceLossErrorInfo() The function's frame size was reported to be > 70KiB, far exceeding our goal (not yet enforced) of 20KiB. This is primarily due to the use of a QVLA<VkDeviceFaultVendorInfoEXT> where the struct has a char description[256], so that field alone counts for 64KiB of stack frame size (when multiplied with the default QVLA Prealloc of 256). This function is not performance-critical, seeing as it's called only after qWarning()s, so is on the cold path, anyway, but even if it were, QVLA value-initializes the elements on resize(), yet vkGetDeviceFaultInfoEXT() will overwrite everything, anyway, so QVLA is zeroing out all that memory for nothing. Use q20::make_unique_for_overwrite() instead. While that goes to the heap, unconditionally, incl. for zero-size, it critically doesn't value-initialize the array, regaining some of the overhead caused by heap use. Also mark the whole function as cold, so optimize-for-size covers the whole function and not just the code after the first qWarning(), probably avoiding a .clone.cold/hot split of the function. My Vulkan isn't new enough to support these APIs, so I cannot check how much text size this saves. Amends 6da0a51f1a04bc0cce787b61614ddb3dad3c38d2 (6.12). Change-Id: Ic01b89713a727280fc3e745c9eb0ffc1dcd50466 Reviewed-by: Aurélien Brooke <[email protected]> Reviewed-by: Laszlo Agocs <[email protected]> (cherry picked from commit 5b048f9c4633d709442176e10c1c8e0cb384ae98) Reviewed-by: Qt Cherry-pick Bot <[email protected]> https://invent.kde.org/qt/qt/qtbase/-/commit/320ad948cd5ffacf20df0ac4c324c60e8dec1b6d Git commit a1c42ee0ebcae57ef2734570611a8800ec88d893 by Qt Cherry-pick Bot (on behalf of Laszlo Agocs) on 04/08/2026 at 03:14.. rhi: vulkan: Expand docs on setVkInstance and extensions Change-Id: Id9b12a4995c24098b9a0c01e6569e452190e00aa Reviewed-by: Andy Nichols <[email protected]> (cherry picked from commit 4be989168ad0f9432339bbd3b25e24d86df4da73) Reviewed-by: Qt Cherry-pick Bot <[email protected]> https://invent.kde.org/qt/qt/qtbase/-/commit/a1c42ee0ebcae57ef2734570611a8800ec88d893 Git commit 51be7bf34ab47cad2153db10cee31bfa088ecc76 by Qt Cherry-pick Bot (on behalf of Laszlo Agocs) on 04/08/2026 at 03:14.. rhi: Validate element counts when deserializing a QShader The .qsb deserializers took every list element count straight from the QDataStream and passed it to QList::resize(). A negative count violates the resize() precondition, which is only guarded by a Q_ASSERT and so is undefined behavior in release builds, while a huge count leads to a pointless large allocation and a long spin over a stream that ran out of data long ago. QDataStream::status() was never consulted. Add QShaderPrivate::readCount() and use it for all such counts, both in QShader::fromSerialized() and in the QShaderDescription parsing. It rejects a count when the stream is no longer Ok, when it is negative, or when it exceeds what the remaining data could possibly hold: every element of every list takes at least one 32-bit value, hence the bytesAvailable() / 4 bound. On failure the stream is switched to ReadCorruptData, which makes all subsequent reads no-ops, so the error propagates up to fromSerialized(), where the status is now checked once more before handing out the result. A truncated package therefore ends up as an invalid QShader, which is what the documentation already promised. This does not change the fact that all input is still expected to be fully trusted content. Change-Id: I0c8523d050a330fa0067399b8e94c54e9059ae9c Reviewed-by: Andy Nichols <[email protected]> (cherry picked from commit 1b57e51521c6c5e08abd7446ff18ced04b86d9a8) Reviewed-by: Qt Cherry-pick Bot <[email protected]> https://invent.kde.org/qt/qt/qtbase/-/commit/51be7bf34ab47cad2153db10cee31bfa088ecc76 Git commit 5b5bfbc914071b1b3c50b4ef57247842df4b4a63 by Qt Cherry-pick Bot (on behalf of Laszlo Agocs) on 04/08/2026 at 03:14.. gui/opengl: Add security consideration sections to docs Task-number: QTBUG-148739 Pick-to: 6.11 6.8 Change-Id: I2bf28ba35c38d7774c2fdca085fc2fbe165f64e0 Reviewed-by: Andy Nichols <[email protected]> (cherry picked from commit 249ea8ee9e59ce2cc9341be566ada4f1d39ce32f) Reviewed-by: Qt Cherry-pick Bot <[email protected]> https://invent.kde.org/qt/qt/qtbase/-/commit/5b5bfbc914071b1b3c50b4ef57247842df4b4a63 Git commit 791e990c40c6ad12d28d083fa62fac609d4507a5 by Qt Cherry-pick Bot (on behalf of Laszlo Agocs) on 04/08/2026 at 03:14.. rhi: Limit struct nesting depth when deserializing a QShader This does not change the fact that all input is still expected to be fully trusted content. Change-Id: Ia2c3df23027025eff4644eff3b9abb16eea8ab54 Reviewed-by: Andy Nichols <[email protected]> (cherry picked from commit d3ed957c713b97aa59aac8ddaf7103052ceaed43) Reviewed-by: Qt Cherry-pick Bot <[email protected]> https://invent.kde.org/qt/qt/qtbase/-/commit/791e990c40c6ad12d28d083fa62fac609d4507a5 Git commit e3384f7a76ca45f17bff26cf4d6d0647b2388e48 by Qt Cherry-pick Bot (on behalf of Laszlo Agocs) on 04/08/2026 at 03:14.. Guard Vulkan device function resolver data structure deviceFunctions() and resetDeviceFunctions() both mutate the deviceFuncs hash without any synchronization, while the documentation invites calling deviceFunctions() repeatedly from renderer code that may well be multithreaded. Change-Id: I799dfa29cb1010fe4df3f34001a4a5c50635d59f Reviewed-by: Andy Nichols <[email protected]> (cherry picked from commit f3ffe251fc53ff2fff083fe3fe54cea60348dca9) Reviewed-by: Qt Cherry-pick Bot <[email protected]> https://invent.kde.org/qt/qt/qtbase/-/commit/e3384f7a76ca45f17bff26cf4d6d0647b2388e48 Git commit b403e2d59685a7f6874fdb73aaf83c6f611d9122 by Qt Cherry-pick Bot (on behalf of Laszlo Agocs) on 04/08/2026 at 03:14.. Protect Vulkan debug filter lists against concurrent access Change-Id: Ic81627fa5ae4c62bf97679914f9331cccdca9486 Reviewed-by: Andy Nichols <[email protected]> (cherry picked from commit 62c25f665a60908ad8cb76172bf49682698faba3) Reviewed-by: Qt Cherry-pick Bot <[email protected]> https://invent.kde.org/qt/qt/qtbase/-/commit/b403e2d59685a7f6874fdb73aaf83c6f611d9122 Git commit 4f12545d2b2d07e8af34823423a6a08fe3c8b4b0 by Qt Cherry-pick Bot (on behalf of Laszlo Agocs) on 04/08/2026 at 03:14.. Handle it better when create() failed in QVulkanInstance Change-Id: I9a86188612784801880bb53a33dc8de3d3ec42aa Reviewed-by: Andy Nichols <[email protected]> (cherry picked from commit 19c47f09caad1c18e62846d5ce07a1585251c3d4) Reviewed-by: Qt Cherry-pick Bot <[email protected]> https://invent.kde.org/qt/qt/qtbase/-/commit/4f12545d2b2d07e8af34823423a6a08fe3c8b4b0 Git commit 97ada28950b5e964981a36834385ef3b2397b292 by Qt Cherry-pick Bot (on behalf of Jean-Michaël Celerier) on 04/08/2026 at 03:14.. BrotliCommon was not being linked to in static build Pick-to: 6.11 Change-Id: Ie55fcb0160547f90450138945bec146529b5d3c4 Reviewed-by: Mårten Nordheim <[email protected]> (cherry picked from commit 0e25e784273c598d3a24dceee73e3aecb0b146b9) Reviewed-by: Qt Cherry-pick Bot <[email protected]> https://invent.kde.org/qt/qt/qtbase/-/commit/97ada28950b5e964981a36834385ef3b2397b292 Git commit 6c2a70b19b59583052270c10c89a70c5a2a0a177 by Qt Cherry-pick Bot (on behalf of Jean-Michaël Celerier) on 04/08/2026 at 03:14.. qversiontagging: don't emit ELF symbol versions in static builds A static build has no version script, so the version nodes referenced by the .symver directives are never defined and lld rejects them. Pick-to: 6.11 Change-Id: I78cf8390fd724af89a6d8b3168bcd89f969e91c6 Reviewed-by: Thiago Macieira <[email protected]> (cherry picked from commit ae66214369fe9bc760aca4c525b5e5ec57c90f35) Reviewed-by: Qt Cherry-pick Bot <[email protected]> https://invent.kde.org/qt/qt/qtbase/-/commit/6c2a70b19b59583052270c10c89a70c5a2a0a177 Git commit 6c975573b29e9ef215b9f1d6678f8f34d4f6e7af by Qt Cherry-pick Bot (on behalf of Jean-Michaël Celerier) on 04/08/2026 at 03:14.. QTipLabel: guard styleSheetParentDestroyed() definition Its declaration and the styleSheetParent member are already guarded by QT_CONFIG(style_stylesheet). Pick-to: 6.11 Change-Id: Id9e73e1529d8433a48ca6d41ec5b6a9ac50f426d Reviewed-by: David Edmundson <[email protected]> Reviewed-by: Tim Blechmann <[email protected]> (cherry picked from commit 230d9f54483a207f51201fea73333f03aab0daeb) Reviewed-by: Qt Cherry-pick Bot <[email protected]> https://invent.kde.org/qt/qt/qtbase/-/commit/6c975573b29e9ef215b9f1d6678f8f34d4f6e7af Git commit 607a2e489d516b2bbf38d003f948d62bf0cb3232 by Qt Cherry-pick Bot (on behalf of Tor Arne Vestbø) on 04/08/2026 at 03:14.. macOS: Add privacy manifest for QtGui use of NSProcessInfo.systemUptime Per https://developer.apple.com/documentation/bundleresources/privacy-manifest-files Pick-to: 6.11 6.8 Change-Id: I5e2777684563bc7066b1be1790acd9f7dedd6c40 Reviewed-by: Doris Verria <[email protected]> (cherry picked from commit a67383e2e95f9da40335a8b519a9a64382b70b47) Reviewed-by: Qt Cherry-pick Bot <[email protected]> https://invent.kde.org/qt/qt/qtbase/-/commit/607a2e489d516b2bbf38d003f948d62bf0cb3232 Git commit a077a3a64c4d5d25e178e0c211ba4f5b776fc352 by Qt Cherry-pick Bot (on behalf of Tor Arne Vestbø) on 04/08/2026 at 03:14.. macOS: Use the live modifier state during drag and drop The NSDraggingDestination callbacks hand us an id<NSDraggingInfo>, which carries no keyboard modifier state, so we reached for NSApp.currentEvent to fill in the modifiers of the QWSI drag events. But when the drag originates in another process the target process doesn't get any events at all, leaving us with whatever unrelated event happened to be current. We now read NSEvent.modifierFlags instead, mirroring what we already do for the buttons on the adjacent line via currentlyPressedMouseButtons(). That's also the semantics we want: the user can press Option mid-drag to switch between copy and move, and the drag feedback should follow the current state, not that of the initiating press. Pick-to: 6.11 6.8 Change-Id: I4ec86585c26a324e9e909949573885cb954062e7 Reviewed-by: Doris Verria <[email protected]> (cherry picked from commit eab8f8afb059b2489022ea9c13e7aedd6b8b5138) Reviewed-by: Qt Cherry-pick Bot <[email protected]> https://invent.kde.org/qt/qt/qtbase/-/commit/a077a3a64c4d5d25e178e0c211ba4f5b776fc352 Git commit 5cd3007f4e0b5dd0e530e9d637b7ecee2330d7fa by Qt Cherry-pick Bot (on behalf of Tor Arne Vestbø) on 04/08/2026 at 03:14.. macOS: Don't rely on NSApp.currentEvent when starting a system move QPlatformWindow::startSystemMove() carries no event, so we reached for NSApp.currentEvent to get one to hand to performWindowDragWithEvent:. That is not reliable: as of macOS 27 a gesture recognizer can defer an action callback past the event that triggered it, and the call may not originate from a mouse event in the first place. We now synthesize the event we pass along, which is what AppKit itself does in this situation, and use the current button state to decide whether a window drag is possible at all. AppKit tracks the left mouse button for the duration of the drag, so unless it is actually pressed the call would do nothing. Reporting that up front is more accurate than the old event type switch, which also claimed success for right and other button presses. Pick-to: 6.11 6.8 Change-Id: Ie8f9f55dac64210695b7555a4819246a0191a822 Reviewed-by: Doris Verria <[email protected]> (cherry picked from commit 9b342ddf2a8010e50c2bcc330967077479fa862a) Reviewed-by: Qt Cherry-pick Bot <[email protected]> https://invent.kde.org/qt/qt/qtbase/-/commit/5cd3007f4e0b5dd0e530e9d637b7ecee2330d7fa Git commit 85c3adf7d3b3e36e90230b24a93d3d94ad3cbd45 by Qt Cherry-pick Bot (on behalf of Tor Arne Vestbø) on 04/08/2026 at 03:14.. macOS: Don't rely on NSApp.currentEvent when inserting newlines When the input method asks us to insert a newline we base the resulting key event on the key event we are currently interpreting, and only fall back to NSApp.currentEvent when we do not have one. That fallback is not reliable, as the current event may be unrelated to the text insertion, or missing altogether. The only things we need from the event in this situation are the timestamp and the modifiers, both of which are available as current state, so we now teach KeyEvent to fall back to that when constructed without an event. NSProcessInfo.processInfo.systemUptime shares its timebase with NSEvent.timestamp, so the resulting timestamps are still comparable to those of real events. Pick-to: 6.11 6.8 Change-Id: I823f52ae5002f27a42e47d0b2ea06b5db5674bcf Reviewed-by: Doris Verria <[email protected]> (cherry picked from commit 08058688a9fa72262b43a479a3a7a53d93165226) Reviewed-by: Qt Cherry-pick Bot <[email protected]> https://invent.kde.org/qt/qt/qtbase/-/commit/85c3adf7d3b3e36e90230b24a93d3d94ad3cbd45 Git commit 112efca14714d25ac56e4beedde8a43232d612de by Qt Cherry-pick Bot (on behalf of Tor Arne Vestbø) on 04/08/2026 at 03:14.. macOS: Don't rely on NSApp.currentEvent when inserting text To decide whether the input method merely echoed the key press, or transformed it into something else, we compare the inserted text to the characters of the key event. We were reaching for NSApp.currentEvent to get hold of that event, but the current event may well be unrelated to the text insertion. We now use the key event we are currently interpreting, which we already keep track of. For the cases where the text insertion does not originate from a key event at all, such as the Keyboard Viewer or an accent popup, we do not have one, and will then correctly conclude that the text does not match, and send it as an input method event. The event type check is no longer needed, as the interpreted key event is always a key press. This restores the state based approach that 294e4c7aa8cacd63c01d3836ce06c1f2d8c5ad5c replaced with the current event, but without a dedicated member for it. Pick-to: 6.11 6.8 Change-Id: I22d8bedd8a09135afaa25d6334f9b34ea29e8842 Reviewed-by: Doris Verria <[email protected]> (cherry picked from commit f567bd1f79f9ab03b58dc1d732e8070c6dee7b53) Reviewed-by: Qt Cherry-pick Bot <[email protected]> https://invent.kde.org/qt/qt/qtbase/-/commit/112efca14714d25ac56e4beedde8a43232d612de Git commit 5d6ed915ec7630951fd4c480ec69ab5b94b817b7 by Qt Cherry-pick Bot (on behalf of Tor Arne Vestbø) on 04/08/2026 at 03:14.. macOS: Make the isMouseEvent helper available to the whole plugin It was a file static in qnswindow.mm, but we need the same check in other places as well. We now express it in terms of the existing cocoaEvent2QtMouseEvent, which as a side effect also covers the NSEventTypeOtherMouse* events that the file static left out, so frame strut handling and popup redirection now treat the middle mouse button like the left and right ones. Pick-to: 6.11 6.8 Change-Id: I244d962fcc52b0bbb43ec66a2860ee55a752d2ce Reviewed-by: Doris Verria <[email protected]> (cherry picked from commit fd22838f0efb997da3462c225538508e603e201f) Reviewed-by: Qt Cherry-pick Bot <[email protected]> https://invent.kde.org/qt/qt/qtbase/-/commit/5d6ed915ec7630951fd4c480ec69ab5b94b817b7 Git commit cd418b4b1a0c2ffc0ce5d1b708879e7fd3ec5a3f by Qt Cherry-pick Bot (on behalf of Tor Arne Vestbø) on 04/08/2026 at 03:14.. macOS: Don't assume the current event is a mouse event in the tray icon The status item button's action callback has no event parameter, so we consult NSApp.currentEvent to determine the activation reason. As of macOS 27 NSControls are driven by gesture recognizers, which defers the action callback past the event that triggered it, so the current event is not necessarily a mouse event anymore, and asking a non-mouse event for its clickCount raises an exception. We now report the activation as Unknown in that situation. Determining the real activation reason without an event is a larger task, as nothing but an event carries the click count. Pick-to: 6.11 6.8 Change-Id: I48b082fcd0778c22eec71c4c96c22b812ec9fc6d Reviewed-by: Doris Verria <[email protected]> (cherry picked from commit 65020b43cdd2c923c42ac4bc894c967ac90a0477) Reviewed-by: Qt Cherry-pick Bot <[email protected]> https://invent.kde.org/qt/qt/qtbase/-/commit/cd418b4b1a0c2ffc0ce5d1b708879e7fd3ec5a3f Git commit 889ec7747cc280267fe3c4df2caad52279e4db6b by Qt Cherry-pick Bot (on behalf of Dawid Śliwa) on 04/08/2026 at 07:53.. tst_QWindow: test reparenting on HarmonyOS Testing childGeometryAfterReparent on HarmonyOS devices exposed a difference between freeform and fullscreen-only modes. On a tablet, top-level windows are system-controlled and cannot honor the requested geometry, so the test fails before it reaches the reparenting operation. Skipping the entire test would hide its actual regression coverage. After reparenting, the window is embedded and must honor its geometry; this is where stale top-level frame margins can incorrectly affect the child. Use supportsNonFullScreenWindows() to gate only the assertions that require movable top-level windows. Always execute the embedded-window assertions so fullscreen HarmonyOS devices still verify the relevant behavior. This follows 0ec0a05addeb026e201ad3e142845d715386919b . Task-number: QTBUG-148260 Change-Id: I24db16dc95baeabe890779beff207dfb1787ad0d Reviewed-by: Liang Qi <[email protected]> (cherry picked from commit 9c1b7cb6e92d395ed1f4b688348b3d57b4386934) Reviewed-by: Qt Cherry-pick Bot <[email protected]> https://invent.kde.org/qt/qt/qtbase/-/commit/889ec7747cc280267fe3c4df2caad52279e4db6b Git commit f979934251c9759a5282c2b0e47a699a6c64f333 by Qt Cherry-pick Bot (on behalf of Thiago Macieira) on 04/08/2026 at 07:53.. QStringBuilder: remove ASCII cast warning for char16_t There is no ASCII cast here. Amends commit 641e010cc7b52b6c3ac213e151781ffcbdd89145, which introduced char16_t support. I'm guessing this was copy & paste mistake. qqmltcpropertyutils_p.h:39:47: required from here 38 | return (elementType->isReferenceType() ? u"QQmlListProperty<" : u"QList<") | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 39 | + elementType->internalName() + u'>'; | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~ qstringbuilder.h:402:37: warning: ‘static void QConcatenable<const char16_t*>::appendTo(const char16_t*, QChar*&)’ is deprecated: Use fromUtf8, QStringLiteral, or QLatin1StringView [-Wdeprecated-declarations] qstringbuilder.h:351:43: note: declared here 351 | QT_ASCII_CAST_WARN static inline void appendTo(const char16_t *a, QChar *&out) | ^~~~~~~~ Pick-to: 6.11 6.8 Change-Id: Iddfa44f640511c61f636fffdaa7418b53f40169e Reviewed-by: Marc Mutz <[email protected]> (cherry picked from commit 64d9407831aaf6004084ce796ef511b8d8c6333b) Reviewed-by: Qt Cherry-pick Bot <[email protected]> https://invent.kde.org/qt/qt/qtbase/-/commit/f979934251c9759a5282c2b0e47a699a6c64f333 Git commit 7e16efc816a97958bf11b9bf50225d614404846e by Qt Cherry-pick Bot (on behalf of Karim Pinter) on 04/08/2026 at 07:53.. VxWorks 26.03 fixes tst_QFile::openDirectory() fail on CI Using VxWorks 24.03 and 25.03 caused tst_QFile::openDirectory() to fail, on 26.03 it works, the QEXPECT_FAIL macro has been removed. Fixes: QTBUG-130074 Change-Id: I225c9ab4a4688bd9f8e4445714b5fea266de55e9 Reviewed-by: Thiago Macieira <[email protected]> (cherry picked from commit edd0a78a48b23b2371b1d053405ef1fb4f6c1110) Reviewed-by: Qt Cherry-pick Bot <[email protected]> https://invent.kde.org/qt/qt/qtbase/-/commit/7e16efc816a97958bf11b9bf50225d614404846e Git commit 8a87631371453f4909f8bdd890eaacc68a3e4102 by Qt Cherry-pick Bot (on behalf of Laszlo Agocs) on 04/08/2026 at 07:53.. libinput: Avoid out of bounds input coords Clamp since it is reported that libinput_event_touch_get_x/y_transformed may return values == width or height, and we need 0..width-1 and height-1. Fixes: QTBUG-147156 Pick-to: 6.11 6.8 Change-Id: I650f6b800bced82b3d8e79a954d17afdba5486f8 Reviewed-by: Andy Nichols <[email protected]> (cherry picked from commit b4ced2b143a652cf8f6d42f798d28c5e37fa1813) Reviewed-by: Qt Cherry-pick Bot <[email protected]> https://invent.kde.org/qt/qt/qtbase/-/commit/8a87631371453f4909f8bdd890eaacc68a3e4102 Git commit 12994aa075377ecf1a88e56d0e152fa2e01a81bb by Qt Cherry-pick Bot (on behalf of Laszlo Agocs) on 04/08/2026 at 07:53.. libinput: Do not round mouse move position Fixes: QTBUG-147155 Pick-to: 6.11 6.8 Change-Id: I516e6fc35770dc75fa47118c9faf78506b8fd555 Reviewed-by: Andy Nichols <[email protected]> (cherry picked from commit af9fade93b0e0dfc901e2114a6d90200dd652ca3) Reviewed-by: Qt Cherry-pick Bot <[email protected]> https://invent.kde.org/qt/qt/qtbase/-/commit/12994aa075377ecf1a88e56d0e152fa2e01a81bb Git commit c975fe85b28ecc4ecdeb0d2b16b3df93076b0533 by Qt Cherry-pick Bot (on behalf of Laszlo Agocs) on 04/08/2026 at 07:53.. glx: Always set swap interval in makeCurrent Fixes: QTBUG-147854 Pick-to: 6.11 6.8 Change-Id: I86f6a8eba112f3cc278fc79bc0f32a2e11b45ec9 Reviewed-by: Andy Nichols <[email protected]> (cherry picked from commit 9106893dce320961ddc0fc5c5ff06e0fd8420f04) Reviewed-by: Qt Cherry-pick Bot <[email protected]> https://invent.kde.org/qt/qt/qtbase/-/commit/c975fe85b28ecc4ecdeb0d2b16b3df93076b0533