DolphinWX: Don't bind context menu when GC filesystem is invalid

If this isn't done, it's possible to select Extract All Files
and make Dolphin dereference a nullptr m_filesystem.
This commit is contained in:
JosJuice 2017-06-04 14:30:40 +02:00
parent 6065525887
commit d664c454a4
2 changed files with 10 additions and 7 deletions

View File

@ -159,10 +159,11 @@ FilesystemPanel::FilesystemPanel(wxWindow* parent, wxWindowID id,
: wxPanel{parent, id}, m_opened_iso{opened_iso} : wxPanel{parent, id}, m_opened_iso{opened_iso}
{ {
CreateGUI(); CreateGUI();
BindEvents(); if (PopulateFileSystemTree())
PopulateFileSystemTree(); {
BindEvents();
m_tree_ctrl->Expand(m_tree_ctrl->GetRootItem()); m_tree_ctrl->Expand(m_tree_ctrl->GetRootItem());
}
} }
FilesystemPanel::~FilesystemPanel() = default; FilesystemPanel::~FilesystemPanel() = default;
@ -194,7 +195,7 @@ void FilesystemPanel::CreateGUI()
SetSizer(main_sizer); SetSizer(main_sizer);
} }
void FilesystemPanel::PopulateFileSystemTree() bool FilesystemPanel::PopulateFileSystemTree()
{ {
const std::vector<DiscIO::Partition> partitions = m_opened_iso->GetPartitions(); const std::vector<DiscIO::Partition> partitions = m_opened_iso->GetPartitions();
m_has_partitions = !partitions.empty(); m_has_partitions = !partitions.empty();
@ -224,10 +225,12 @@ void FilesystemPanel::PopulateFileSystemTree()
{ {
m_filesystem = DiscIO::CreateFileSystem(m_opened_iso.get(), DiscIO::PARTITION_NONE); m_filesystem = DiscIO::CreateFileSystem(m_opened_iso.get(), DiscIO::PARTITION_NONE);
if (!m_filesystem) if (!m_filesystem)
return; return false;
CreateDirectoryTree(m_tree_ctrl, m_tree_ctrl->GetRootItem(), m_filesystem->GetFileList()); CreateDirectoryTree(m_tree_ctrl, m_tree_ctrl->GetRootItem(), m_filesystem->GetFileList());
} }
return true;
} }
void FilesystemPanel::OnRightClickTree(wxTreeEvent& event) void FilesystemPanel::OnRightClickTree(wxTreeEvent& event)

View File

@ -39,7 +39,7 @@ private:
void CreateGUI(); void CreateGUI();
void BindEvents(); void BindEvents();
void PopulateFileSystemTree(); bool PopulateFileSystemTree();
void OnRightClickTree(wxTreeEvent&); void OnRightClickTree(wxTreeEvent&);
void OnExtractFile(wxCommandEvent&); void OnExtractFile(wxCommandEvent&);