From d93be16eb1bb43ba602fcd7398fc0e46084dbd7f Mon Sep 17 00:00:00 2001 From: Tobias Markmann Date: Mon, 15 May 2017 11:19:12 +0200 Subject: Unregister as event filter in QtFilterWidget dtor When QtFilterWidget is deleted, it is still registered as event filter and events might be sent to an already deleted QtFilterWidget, causing a crash. SWIFT-247 Test-Information: All unit tests pass, roster filtering still works, and Swift does not crash on exit on macOS 10.12.4 with Qt 5.4.2. Change-Id: I84a7e1af64d1376db3dfdd0fd7cf95b547cca9a1 diff --git a/Swift/QtUI/Roster/QtFilterWidget.cpp b/Swift/QtUI/Roster/QtFilterWidget.cpp index 2e1ead9..4df4a39 100644 --- a/Swift/QtUI/Roster/QtFilterWidget.cpp +++ b/Swift/QtUI/Roster/QtFilterWidget.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014-2016 Isode Limited. + * Copyright (c) 2014-2017 Isode Limited. * All rights reserved. * See the COPYING file for more information. */ @@ -42,13 +42,14 @@ QtFilterWidget::QtFilterWidget(QWidget* parent, QtTreeWidget* treeView, UIEventS layout->insertWidget(targetIndex, this); filterLineEdit_->installEventFilter(this); - treeView->installEventFilter(this); + treeView_->installEventFilter(this); sourceModel_ = treeView_->model(); } QtFilterWidget::~QtFilterWidget() { - + filterLineEdit_->removeEventFilter(this); + treeView_->removeEventFilter(this); } bool QtFilterWidget::eventFilter(QObject*, QEvent* event) { -- cgit v0.10.2-6-g49f6