aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNadia Holmquist Pedersen <nadia@nhp.sh>2020-05-06 03:49:20 +0200
committerNadia Holmquist Pedersen <nadia@nhp.sh>2020-05-06 03:49:20 +0200
commitbeb3b20d5e85f9d58017684dc0abc39a0352f2f4 (patch)
tree7a055b9b35e09683bef1bd165ad9702e08d74955
parent6cfe4faa56f4c7c34bf42cd600c66a2ed7966062 (diff)
Fix crash with nonexistent config directory or writable files.
-rw-r--r--src/frontend/qt_sdl/Platform.cpp10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/frontend/qt_sdl/Platform.cpp b/src/frontend/qt_sdl/Platform.cpp
index ddf48e9..7ce70ab 100644
--- a/src/frontend/qt_sdl/Platform.cpp
+++ b/src/frontend/qt_sdl/Platform.cpp
@@ -80,10 +80,12 @@ FILE* OpenFile(const char* path, const char* mode, bool mustexist)
{
QFile f(path);
- if (!mustexist && !f.exists())
+ if (mustexist && !f.exists())
+ {
return nullptr;
+ }
- f.open(QIODevice::ReadOnly);
+ f.open(QIODevice::ReadWrite);
FILE* file = fdopen(dup(f.handle()), mode);
f.close();
@@ -105,7 +107,9 @@ FILE* OpenLocalFile(const char* path, const char* mode)
fullpath = QString("./") + path;
#else
// Check user configuration directory
- fullpath = QStandardPaths::writableLocation(QStandardPaths::ConfigLocation) + "/melonDS/";
+ QDir config(QStandardPaths::writableLocation(QStandardPaths::ConfigLocation));
+ config.mkdir("melonDS");
+ fullpath = config.absolutePath() + "/melonDS/";
fullpath.append(path);
#endif
}