Mercurial > octave
changeset 29633:a548bab9eafa
avoid crash when closing GUI with open editor tabs (bug #60500)
* file-editor.cc (file_editor::handle_tab_ready_to_close,
file_editor::handle_tab_remove_request): Use deleteLater to delete
file editor tab objects.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Fri, 07 May 2021 21:05:56 -0400 |
parents | 162abe58aaef |
children | 1b945016d837 |
files | libgui/src/m-editor/file-editor.cc |
diffstat | 1 files changed, 9 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/libgui/src/m-editor/file-editor.cc Fri May 07 23:35:15 2021 +0200 +++ b/libgui/src/m-editor/file-editor.cc Fri May 07 21:05:56 2021 -0400 @@ -515,6 +515,10 @@ if (m_closing_canceled) return; + // FIXME: Why count down to zero here before doing anything? Why + // not remove and delete each tab that is ready to be closed, one + // per invocation? + m_number_of_tabs--; if (m_number_of_tabs > 0) @@ -534,7 +538,7 @@ std::list<file_editor_tab *> editor_tab_lst = m_tab_widget->tab_list (); for (auto editor_tab : editor_tab_lst) - delete editor_tab; + editor_tab->deleteLater (); m_tab_widget->clear (); @@ -979,10 +983,10 @@ if (m_tab_widget->widget (i) == fileEditorTab) { m_tab_widget->removeTab (i); - // Deleting sender is dodgy, but works because the signal - // is the last item in the sender's routines. - // FIXME: can we use deleteLater here? - delete fileEditorTab; + + // Deleting the sender (even with deleteLater) seems a + // bit strange. Is there a better way? + fileEditorTab->deleteLater (); break; } }