Skip to content

Set geometry property in QXcbWindow after checking minimum size

QXcbWindow::create() bound the window's size to windowMinimumSize(), after its size had been inherited from parent(). QPlatformWindow::setGeometry() was called before that sanity check.

When a fullscreen window is re-mapped from a deactivated screen to the remaining screen, the call to QPlatformWindow::setGeometry() assigns an invalid QRect to QPlatformWindowPrivate::rect The negative int values x2 and/or y2 cause QXcbBackingStoreImage::flushPixmap to address unmapped memory and crash.

This patch moves the call to QPlatformWindow::setGeometry() from before to after bounding to a minimum value. That assures a valid rectangle to be assigned in all cases.

Fixes: QTBUG-109226 Pick-to: 6.4 6.2 5.15 Change-Id: I349a0f3c721059a9013a275de5b4cb147fbdd7a1 Reviewed-by: Liang Qi liang.qi@qt.io (cherry picked from commit 6a3627b6)

KDE-bug: https://bugs.kde.org/show_bug.cgi?id=461723

Merge request reports