summaryrefslogtreecommitdiff
path: root/Source/Core/DolphinQt2/Config/FilesystemWidget.cpp
diff options
context:
space:
mode:
authorJosJuice <josjuice@gmail.com>2017-09-15 19:44:23 +0200
committerJosJuice <josjuice@gmail.com>2017-09-15 19:44:23 +0200
commita0cddc579f6575a00fbe79df06cb80326fb52c33 (patch)
tree9cd0cdf9e27fac335704f22d76c7515ee8ea7a53 /Source/Core/DolphinQt2/Config/FilesystemWidget.cpp
parent7cb8d6612c6df51073037b56ebc866f180aecd71 (diff)
DolphinQt2: Check for file systems being nullptr
nullptr gets returned for file systems that are deemed invalid.
Diffstat (limited to 'Source/Core/DolphinQt2/Config/FilesystemWidget.cpp')
-rw-r--r--Source/Core/DolphinQt2/Config/FilesystemWidget.cpp20
1 files changed, 16 insertions, 4 deletions
diff --git a/Source/Core/DolphinQt2/Config/FilesystemWidget.cpp b/Source/Core/DolphinQt2/Config/FilesystemWidget.cpp
index 0b9fc9e0e6..f4e5f2651e 100644
--- a/Source/Core/DolphinQt2/Config/FilesystemWidget.cpp
+++ b/Source/Core/DolphinQt2/Config/FilesystemWidget.cpp
@@ -85,8 +85,6 @@ void FilesystemWidget::PopulateView()
for (size_t i = 0; i < partitions.size(); i++)
{
- const DiscIO::FileSystem* file_system = m_volume->GetFileSystem(partitions[i]);
-
auto* item = new QStandardItem(tr("Partition %1").arg(i));
item->setEditable(false);
@@ -94,7 +92,7 @@ void FilesystemWidget::PopulateView()
item->setData(static_cast<qlonglong>(i), ENTRY_PARTITION);
item->setData(QVariant::fromValue(EntryType::Partition), ENTRY_TYPE);
- PopulateDirectory(static_cast<int>(i), item, file_system->GetRoot());
+ PopulateDirectory(static_cast<int>(i), item, partitions[i]);
disc->appendRow(item);
@@ -103,7 +101,15 @@ void FilesystemWidget::PopulateView()
}
if (partitions.empty())
- PopulateDirectory(-1, disc, m_volume->GetFileSystem(DiscIO::PARTITION_NONE)->GetRoot());
+ PopulateDirectory(-1, disc, DiscIO::PARTITION_NONE);
+}
+
+void FilesystemWidget::PopulateDirectory(int partition_id, QStandardItem* root,
+ const DiscIO::Partition& partition)
+{
+ const DiscIO::FileSystem* const file_system = m_volume->GetFileSystem(partition);
+ if (file_system)
+ PopulateDirectory(partition_id, root, file_system->GetRoot());
}
void FilesystemWidget::PopulateDirectory(int partition_id, QStandardItem* root,
@@ -234,6 +240,9 @@ void FilesystemWidget::ExtractDirectory(const DiscIO::Partition& partition, cons
const QString& out)
{
const DiscIO::FileSystem* filesystem = m_volume->GetFileSystem(partition);
+ if (!filesystem)
+ return;
+
std::unique_ptr<DiscIO::FileInfo> info = filesystem->FindFileInfo(path.toStdString());
u32 size = info->GetTotalChildren();
@@ -263,6 +272,9 @@ void FilesystemWidget::ExtractFile(const DiscIO::Partition& partition, const QSt
const QString& out)
{
const DiscIO::FileSystem* filesystem = m_volume->GetFileSystem(partition);
+ if (!filesystem)
+ return;
+
bool success = DiscIO::ExportFile(
*m_volume, partition, filesystem->FindFileInfo(path.toStdString()).get(), out.toStdString());