Add nullptr guard in QStyleSheetStyle::drawPrimitive(PE_PanelLineEdit)
Drawing PE_PanelLineEdit in QStyleSheetStyle with the default argument widget = nullptr causes a segfault. drawPrimitive tries to fall back to a container widget's render rule and therefore calls containerWidget() - which crashes when called with nullptr. Container widget fallback is pointless when drawPrimitive() is called with widget == nullptr. This patch skips it in that case. Fixes: QTBUG-104917 Pick-to: 6.4 6.3 6.2 Change-Id: I09e57dccfebb81a308944c233846d5b9ef58819e Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
This commit is contained in:
parent
818a15234c
commit
effc8be3ce
@ -4612,11 +4612,14 @@ void QStyleSheetStyle::drawPrimitive(PrimitiveElement pe, const QStyleOption *op
|
||||
|
||||
case PE_PanelLineEdit:
|
||||
if (const QStyleOptionFrame *frm = qstyleoption_cast<const QStyleOptionFrame *>(opt)) {
|
||||
if (QWidget *container = containerWidget(w); container != w) {
|
||||
QRenderRule containerRule = renderRule(container, opt);
|
||||
if (!containerRule.hasNativeBorder() || !containerRule.baseStyleCanDraw())
|
||||
return;
|
||||
rule = containerRule;
|
||||
// Fall back to container widget's render rule
|
||||
if (w) {
|
||||
if (QWidget *container = containerWidget(w); container != w) {
|
||||
QRenderRule containerRule = renderRule(container, opt);
|
||||
if (!containerRule.hasNativeBorder() || !containerRule.baseStyleCanDraw())
|
||||
return;
|
||||
rule = containerRule;
|
||||
}
|
||||
}
|
||||
|
||||
if (rule.hasNativeBorder()) {
|
||||
|
Loading…
Reference in New Issue
Block a user