Commit Graph
21 Commits
Author SHA1 Message Date
Dean f822d74d42 Merge pull request #10281 from al3w0f205/test/savedata-sync-memory-null-parameter
test(libSceSaveData.native): cover null parameter validation in sceSaveDataSyncSaveDataMemory
2026-10-26 16:22:35 +13:00
slopggobblercobbler81 9c232b38fe fix(savedata): validate null arguments in delete, search, and mount3 2026-10-25 20:07:59 +01:00
Adrià 160f6592b5 Merge pull request #9409 from cadenasynyster/test/windows-savedata-link-alias
test(libSceSaveData): create the mount identity link with CreateSymbolicLinkW on Windows
2026-10-25 16:50:05 +01:00
Dean Galvin 5d86ed499d Merge main into pr/10281
Take main's header declarations over the local extern block; use the implementation's error value in the test.
2026-10-25 21:06:47 +13:00
boykopovar f38d29fd08 refactor(sdk): add canonical headers for remaining libraries 2026-10-24 23:17:42 +03:00
al3w0f205 07198e1e6a test(libSceSaveData.native): cover null parameter validation in sceSaveDataSyncSaveDataMemory 2026-10-23 11:31:30 -05:00
Dean 7c9d3a005e Merge pull request #8990 from voidlakhan/fix/savedata-null-argument-parameter-error
fix(savedata): validate backup and event result arguments
2026-10-24 01:29:00 +13:00
cadenasynysterandClaude Opus 5.5 587cd64331 test(libSceSaveData): create the mount identity link with CreateSymbolicLinkW on Windows
MinGW's std::filesystem::create_directory_symlink always fails on Windows, so CheckEquivalentMounts never ran its symbolic link alias there and only checked the case alias. It now creates and removes the link with CreateSymbolicLinkW and RemoveDirectoryW, as SaveDataFileWriteFailure.cpp does.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01GtXavMkgCTCdmRpweviHcQ
2026-10-22 21:05:57 +02:00
lakhantheboss 2b1eb36139 fix(savedata): validate backup and event result arguments 2026-10-21 14:06:38 +05:30
lakhantheboss d3542d5eed fix(savedata): return parameter errors for null arguments 2026-10-21 13:23:15 +05:30
al3w0f205 27badc2c3a test(libSceSaveData.native): cover sceSaveDataSaveIconByPath execution 2026-10-20 19:09:56 -05:00
pushkarreddyy 3bb39053ae fix(savedata): return parameter error on null arguments in umount2, loadIcon and saveIcon 2026-10-20 12:54:28 +02:00
Adrià 4f99cbffd7 Merge pull request #7536 from voidlakhan/fix/savedata-setparam-null-arguments
fix(savedata): return parameter error on null arguments in setParam
2026-10-20 12:18:56 +02:00
Adrià fb106a7e9a Merge pull request #6724 from Ondra97/codex/fix-savedata-mount-identity
fix(savedata): prevent duplicate mounts of one backing directory
2026-10-19 12:09:57 +02:00
lakhantheboss a605f94732 fix(savedata): return parameter error on null arguments in setParam 2026-10-18 18:06:26 +05:30
lakhantheboss 0936fe9b53 fix(savedata): return parameter error on null arguments in getMountInfo and getParam 2026-10-17 19:07:36 +05:30
Ondra97 37e62ddb3b fix(savedata): skip identity comparisons for missing paths 2026-10-16 14:16:07 +02:00
Ondra97 fcf65455f5 fix(savedata): prevent duplicate mounts of one backing directory 2026-10-16 08:53:05 +02:00
SandstromPLandClaude Opus 5.5 c73e9720ae fix(savedata): return a parameter error from sceSaveDataMount3 for an invalid directory name
An unterminated or empty directory name, "." or "..", or a name
containing "/", "\" or ":" now returns SAVE_DATA_ERROR_PARAMETER and
leaves the mount result unchanged. The SDK 12.000 reference lists that
code for an invalid parameter of sceSaveDataMount3, KytyPS5's
SaveDataMount3 returns it for an invalid name, and sceSaveDataDelete
and sceSaveDataConvert already return it here for the same check.
It threw before, which stopped Minecraft Preview (PPSA19639) on
entering a world.

The Mount3 trace now prints at most the 32 bytes of the directory name
and the 16 bytes of the mount point, since both can be unterminated
when the mount fails.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-14 12:19:09 +05:30
Yunus Shaikh 4ccf888291 fix(savedata): leave the mount result untouched when sceSaveDataMount3 fails
Animal Well (PPSA22520) checks for its save with a CREATE2 mount it never
unmounts, then saves with a second mount of the same directory. That
mount returns BUSY, and the title keeps using the first mount point for
sceSaveDataPrepare, its save file and sceSaveDataUmount2.
sceSaveDataMount3 cleared the result before its checks, so the save was
written to "/save" in the game folder instead of the save directory, and
the first mount was never released. The result is now written only when
the mount succeeds, as shadPS4 does.
2026-10-12 17:47:46 -07:00
TideOPL c9685e47e4 fix(savedata): report a CREATE2 mount of an existing save as not created
sceSaveDataMount3 with SCE_SAVE_DATA_MOUNT_MODE_CREATE2 opens a save that
already exists, so its mount status is 0 rather than CREATED, as shadPS4's
savedata.cpp reports. A CREATE mount still reports CREATED.
2026-10-08 19:46:23 +01:00