| Summary: | Crash on exit with tabbed diagrams enabled | ||
|---|---|---|---|
| Product: | [Applications] umbrello | Reporter: | Oliver Kellogg <okellogg> |
| Component: | general | Assignee: | Umbrello Development Group <umbrello-devel> |
| Status: | RESOLVED FIXED | ||
| Severity: | normal | CC: | ralf.habacker |
| Priority: | NOR | ||
| Version First Reported In: | Git | ||
| Target Milestone: | --- | ||
| Platform: | Other | ||
| OS: | Linux | ||
| Latest Commit: | https://invent.kde.org/sdk/umbrello/commit/9d9800c31411b0c8b0cf253c0dfddc62fbaa7d2d | Version Fixed/Implemented In: | 2.33.80 (KDE releases 21.03.80) |
| Sentry Crash Report: | |||
|
Description
Oliver Kellogg
2020-12-12 22:03:11 UTC
Git commit 9d9800c31411b0c8b0cf253c0dfddc62fbaa7d2d by Oliver Kellogg. Committed on 12/12/2020 at 23:51. Pushed by okellogg into branch 'master'. Fix for 'Crash on exit with tabbed diagrams enabled' umbrello/uml.cpp - In function slotTabChanged(int index) / slotTabChanged(QWidget* tab) do not call m_doc->changeCurrentView() is s_shuttingDown is true. Reason: Calling changeCurrentView accesses objects which have already been deconstructed. M +2 -2 umbrello/uml.cpp https://invent.kde.org/sdk/umbrello/commit/9d9800c31411b0c8b0cf253c0dfddc62fbaa7d2d Git commit bd8b3b1c9f2ccbd54b7fb34d95db8e6d8d94df0b by Oliver Kellogg.
Committed on 13/12/2020 at 16:30.
Pushed by okellogg into branch 'master'.
Followup to commit 9d9800c fix for crash on exit with tabbed diagrams
There was a further crash on closing in the code path
UMLApp::slotFileClose() => slotFileNew() => m_doc->newDocument()
due to DiagramsModel::m_views not having been reset to empty.
This caused access to stale UMLView objects already deconstructed.
umbrello/models/diagramsmodel.{h,cpp}
- New function removeAllDiagrams clears content of m_views.
umbrello/uml.cpp
- In function slotFileClose call diagramsModel()->removeAllDiagrams()
on m_doc before calling slotFileNew().
M +10 -0 umbrello/models/diagramsmodel.cpp
M +1 -0 umbrello/models/diagramsmodel.h
M +2 -0 umbrello/uml.cpp
https://invent.kde.org/sdk/umbrello/commit/bd8b3b1c9f2ccbd54b7fb34d95db8e6d8d94df0b
|