summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHein-Pieter van Braam <hp@tmm.cx>2017-09-05 01:14:14 +0200
committerHein-Pieter van Braam <hp@tmm.cx>2017-09-05 01:14:14 +0200
commit5fed954a1b16c616f650f0b58c8647bcda5606e7 (patch)
tree1b5091261dadfb98c96982a5f012a56ca5d3f9fa
parenta7c2ff5c94c6e52906b1cc77cd133106b990f107 (diff)
Fix UNIX file open
In #10973 I refactored FileAccessUnix::_open() but I accidentally made it impossible to create new files. This fixes that and fixes #10984
-rw-r--r--drivers/unix/file_access_unix.cpp17
1 files changed, 8 insertions, 9 deletions
diff --git a/drivers/unix/file_access_unix.cpp b/drivers/unix/file_access_unix.cpp
index ec97826a12..db06cce644 100644
--- a/drivers/unix/file_access_unix.cpp
+++ b/drivers/unix/file_access_unix.cpp
@@ -91,15 +91,14 @@ Error FileAccessUnix::_open(const String &p_path, int p_mode_flags) {
//printf("opening %s as %s\n", p_path.utf8().get_data(), path.utf8().get_data());
struct stat st;
int err = stat(path.utf8().get_data(), &st);
- if (err)
- return ERR_FILE_CANT_OPEN;
-
- switch (st.st_mode & S_IFMT) {
- case S_IFLNK:
- case S_IFREG:
- break;
- default:
- return ERR_FILE_CANT_OPEN;
+ if (!err) {
+ switch (st.st_mode & S_IFMT) {
+ case S_IFLNK:
+ case S_IFREG:
+ break;
+ default:
+ return ERR_FILE_CANT_OPEN;
+ }
}
if (is_backup_save_enabled() && (p_mode_flags & WRITE) && !(p_mode_flags & READ)) {