From 0df1a41a1d190d2df22b98458d2c382ae1227534 Mon Sep 17 00:00:00 2001 From: Ben Hetherington Date: Fri, 3 Dec 2021 16:01:16 +0000 Subject: [PATCH] Fix potential crash when restoring container state (#381) This fixes a crash which could occur when restoring the state of a floating container to a non-floating container. This was because `ads::CDockContainerWidget::RestoreState()` will unconditionally assume this is floating if the XML has the `Floating` boolean set, and will dereference `floatingWidget()`. If this isn't floating, `floatingWidget()` will return `nullptr`, leading to a crash when it's subsequently used. Fixes #379. --- src/DockContainerWidget.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/DockContainerWidget.cpp b/src/DockContainerWidget.cpp index 53bdd1b..afd2b9c 100644 --- a/src/DockContainerWidget.cpp +++ b/src/DockContainerWidget.cpp @@ -1680,7 +1680,10 @@ bool CDockContainerWidget::restoreState(CDockingStateReader& s, bool Testing) if (!Testing) { CFloatingDockContainer* FloatingWidget = floatingWidget(); - FloatingWidget->restoreGeometry(Geometry); + if (FloatingWidget) + { + FloatingWidget->restoreGeometry(Geometry); + } } }