[qrvthtool] MessageWidgetStack: Delete all MessageWidgets before clearing d->messageWidgets.

Otherwise, stray deletion signals could trigger messageWidget_destroyed_slot()
after the std::set is deleted, which results in a crash.
This commit is contained in:
David Korth 2023-11-25 10:17:16 -05:00
parent 46430299a7
commit 3dc3a473ed

View File

@ -49,8 +49,9 @@ MessageWidgetStackPrivate::MessageWidgetStackPrivate(MessageWidgetStack *q)
MessageWidgetStackPrivate::~MessageWidgetStackPrivate() MessageWidgetStackPrivate::~MessageWidgetStackPrivate()
{ {
// NOTE: The MessageWidgets are owned by MessageWidgetStack, // Delete the MessageWidgets manually in order to prevent
// so we don't need to delete them manually. // deletion signals from triggering messageWidget_destroyed_slot().
qDeleteAll(messageWidgets);
messageWidgets.clear(); messageWidgets.clear();
} }
@ -130,4 +131,3 @@ void MessageWidgetStack::messageWidget_destroyed_slot(QObject *obj)
Q_D(MessageWidgetStack); Q_D(MessageWidgetStack);
d->messageWidgets.erase(qobject_cast<MessageWidget*>(obj)); d->messageWidgets.erase(qobject_cast<MessageWidget*>(obj));
} }