Skip to content

Commit 84b0a9c

Browse files
authored
Merge pull request #4615 from ales-erjavec/fixes/test-learners-segfault
[FIX] owtestandscore: Add cancelled tasks to dispose queue
2 parents a5e7be1 + 50c4b3d commit 84b0a9c

File tree

1 file changed

+12
-1
lines changed

1 file changed

+12
-1
lines changed

Orange/widgets/evaluate/owtestandscore.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
from AnyQt.QtCore import Qt, QSize, QThread
2121
from AnyQt.QtCore import pyqtSlot as Slot
2222
from AnyQt.QtGui import QStandardItem, QDoubleValidator
23-
from AnyQt.QtWidgets import QHeaderView, QTableWidget, QLabel
23+
from AnyQt.QtWidgets import QHeaderView, QTableWidget, QLabel, QApplication
2424

2525
from Orange.base import Learner
2626
import Orange.classification
@@ -1085,6 +1085,8 @@ def cancel(self):
10851085
task.cancel()
10861086
task.progress_changed.disconnect(self.setProgressValue)
10871087
task.watcher.finished.disconnect(self.__task_complete)
1088+
add_task_to_dispose_queue(task)
1089+
10881090
self.progressBarFinished()
10891091
self.setStatusMessage("")
10901092

@@ -1094,6 +1096,15 @@ def onDeleteWidget(self):
10941096
super().onDeleteWidget()
10951097

10961098

1099+
def add_task_to_dispose_queue(task: TaskState):
1100+
# transfer ownership of task to Qt, and delete it after completion
1101+
# all other signals from task should be disconnected.
1102+
assert task.parent() is None
1103+
app = QApplication.instance()
1104+
task.setParent(app)
1105+
task.watcher.finished.connect(task.deleteLater)
1106+
1107+
10971108
class UserInterrupt(BaseException):
10981109
"""
10991110
A BaseException subclass used for cooperative task/thread cancellation

0 commit comments

Comments
 (0)