diff --git a/src/kits/tracker/ContainerWindow.cpp b/src/kits/tracker/ContainerWindow.cpp index 808e95717c..4cb4308c0a 100644 --- a/src/kits/tracker/ContainerWindow.cpp +++ b/src/kits/tracker/ContainerWindow.cpp @@ -1200,7 +1200,7 @@ BContainerWindow::SaveState(BMessage& message) const bool BContainerWindow::StateNeedsSaving() const { - return fStateNeedsSaving || PoseView()->StateNeedsSaving(); + return fPoseView != NULL && (fStateNeedsSaving || fPoseView->StateNeedsSaving()); } diff --git a/src/kits/tracker/Tracker.cpp b/src/kits/tracker/Tracker.cpp index fd2e0f4996..e5426cef32 100644 --- a/src/kits/tracker/Tracker.cpp +++ b/src/kits/tracker/Tracker.cpp @@ -1113,6 +1113,12 @@ TTracker::OpenContainerWindow(Model* model, BMessage* originalRefsList, if (model != NULL && window->LockLooper()) { window->CreatePoseView(model); + if (window->PoseView() == NULL) { + // Failed initialization. + window->PostMessage(B_QUIT_REQUESTED); + window->UnlockLooper(); + return; + } window->UnlockLooper(); } diff --git a/src/kits/tracker/VirtualDirectoryWindow.cpp b/src/kits/tracker/VirtualDirectoryWindow.cpp index 985bcc3f2b..40e361bfd8 100644 --- a/src/kits/tracker/VirtualDirectoryWindow.cpp +++ b/src/kits/tracker/VirtualDirectoryWindow.cpp @@ -76,6 +76,8 @@ void VirtualDirectoryWindow::CreatePoseView(Model* model) { fPoseView = NewPoseView(model, kListMode); + if (fPoseView == NULL) + return; fBorderedView->GroupLayout()->AddView(fPoseView); fBorderedView->EnableBorderHighlight(false);