Fix Unix temp file creations when using is_backup_save_enabled.
This commit is contained in:
parent
a7d0e18a31
commit
ca58a5d56f
|
@ -102,13 +102,25 @@ Error FileAccessUnix::open_internal(const String &p_path, int p_mode_flags) {
|
||||||
save_path = path;
|
save_path = path;
|
||||||
// Create a temporary file in the same directory as the target file.
|
// Create a temporary file in the same directory as the target file.
|
||||||
path = path + "-XXXXXX";
|
path = path + "-XXXXXX";
|
||||||
if (!mkstemp(path.utf8().ptrw())) {
|
CharString cs = path.utf8();
|
||||||
return ERR_FILE_CANT_OPEN;
|
int fd = mkstemp(cs.ptrw());
|
||||||
|
if (fd == -1) {
|
||||||
|
last_error = ERR_FILE_CANT_OPEN;
|
||||||
|
return last_error;
|
||||||
}
|
}
|
||||||
path = path + ".tmp";
|
path = String::utf8(cs.ptr());
|
||||||
}
|
|
||||||
|
|
||||||
f = fopen(path.utf8().get_data(), mode_string);
|
f = fdopen(fd, mode_string);
|
||||||
|
if (f == nullptr) {
|
||||||
|
// Delete temp file and close descriptor if open failed.
|
||||||
|
::unlink(cs.ptr());
|
||||||
|
::close(fd);
|
||||||
|
last_error = ERR_FILE_CANT_OPEN;
|
||||||
|
return last_error;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
f = fopen(path.utf8().get_data(), mode_string);
|
||||||
|
}
|
||||||
|
|
||||||
if (f == nullptr) {
|
if (f == nullptr) {
|
||||||
switch (errno) {
|
switch (errno) {
|
||||||
|
|
Loading…
Reference in New Issue