mirror of
https://github.com/shadps4-emu/shadPS4.git
synced 2025-08-08 09:08:40 +00:00
Fix create flag handling in open (#3255)
Some checks are pending
Build and Release / reuse (push) Waiting to run
Build and Release / clang-format (push) Waiting to run
Build and Release / get-info (push) Waiting to run
Build and Release / windows-sdl (push) Blocked by required conditions
Build and Release / linux-sdl-gcc (push) Blocked by required conditions
Build and Release / windows-qt (push) Blocked by required conditions
Build and Release / macos-sdl (push) Blocked by required conditions
Build and Release / macos-qt (push) Blocked by required conditions
Build and Release / linux-sdl (push) Blocked by required conditions
Build and Release / linux-qt (push) Blocked by required conditions
Build and Release / linux-qt-gcc (push) Blocked by required conditions
Build and Release / pre-release (push) Blocked by required conditions
Some checks are pending
Build and Release / reuse (push) Waiting to run
Build and Release / clang-format (push) Waiting to run
Build and Release / get-info (push) Waiting to run
Build and Release / windows-sdl (push) Blocked by required conditions
Build and Release / linux-sdl-gcc (push) Blocked by required conditions
Build and Release / windows-qt (push) Blocked by required conditions
Build and Release / macos-sdl (push) Blocked by required conditions
Build and Release / macos-qt (push) Blocked by required conditions
Build and Release / linux-sdl (push) Blocked by required conditions
Build and Release / linux-qt (push) Blocked by required conditions
Build and Release / linux-qt-gcc (push) Blocked by required conditions
Build and Release / pre-release (push) Blocked by required conditions
If the create flag is specified, but the file already exists, then the file should open successfully, regardless of permissions. This fixes a crash seen in Phantasy Star Online 2 New Genesis (CUSA29813)
This commit is contained in:
parent
499451bb80
commit
aeab525a7f
1 changed files with 9 additions and 7 deletions
|
@ -118,14 +118,16 @@ s32 PS4_SYSV_ABI open(const char* raw_path, s32 flags, u16 mode) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (read_only) {
|
if (!exists) {
|
||||||
// Can't create files in a read only directory
|
if (read_only) {
|
||||||
h->DeleteHandle(handle);
|
// Can't create files in a read only directory
|
||||||
*__Error() = POSIX_EROFS;
|
h->DeleteHandle(handle);
|
||||||
return -1;
|
*__Error() = POSIX_EROFS;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
// Create a file if it doesn't exist
|
||||||
|
Common::FS::IOFile out(file->m_host_name, Common::FS::FileAccessMode::Write);
|
||||||
}
|
}
|
||||||
// Create a file if it doesn't exist
|
|
||||||
Common::FS::IOFile out(file->m_host_name, Common::FS::FileAccessMode::Write);
|
|
||||||
} else if (!exists) {
|
} else if (!exists) {
|
||||||
// If we're not creating a file, and it doesn't exist, return ENOENT
|
// If we're not creating a file, and it doesn't exist, return ENOENT
|
||||||
h->DeleteHandle(handle);
|
h->DeleteHandle(handle);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue