Repository navigation
fix(libkernel): stat files under long Windows paths - #7196
Conversation
|
Some comparisons could not be completed because a pull request conflicts with the base branch. Review these shared files manually before concluding that there is no overlap.
|
|
I manually reviewed the three files the overlap check could not compare. #6484 adds rename-semantics tests in GuestFilesystem.cpp; #6044 reorganizes the filesystem test target/file; neither changes or tests long-path stat behavior. #5021’s Open.cpp change is an Apple-specific O_CREAT directory check, unrelated to Windows extended paths or sceKernelStat. I found no duplicate implementation in those PRs. The Windows runtime check for this PR remains pending because the hosted application lane was skipped and I cannot dispatch that workflow without repository admin rights. |
|
@MarcZX100 retested the published follow-up
No menu/gameplay or whole-title result is implied by these metadata controls. Thank you for the quick correction; our #7187 now has the corresponding prefix preservation and regression too. Current composed title follow-up: integrationc784, main667 plus retained fixes/#7187cf84/#7196 head28ea, reaches the older GPU stops from long physical roots: NVIDIA28.656s resident8x DCC refusal; AMD70.750s Vulkan device loss-4. Last captures remain NOW LOADING, no timeout/input or protected-file changes. #3036 carries full scope; the independent metadata controls above establish the fix separately. One source-review error-path point: Earlier validation and failing control at3d18c946@MarcZX100 Windows validation at exact head The ordinary-path correction also works on the actual #7195 file: ordinary root253/full266 characters now returns success and size288. However, the already-extended alias regresses: extended root257/full270 returns An independent fixture confirms that extended-path failure in 3 same-drive and 3 split-drive runs. A small native control confirms the cause on this toolchain: Could |
3d18c94 to
28eaa5b
Compare
|
Good catch.
|
What
Prepare long Windows paths for
sceKernelStatmetadata lookups using the extended path namespace, and use that same path for the subsequent native stat call. Add a Windows regression test that stats an existing file under a path longer thanMAX_PATHthrough a short guest alias, confirms a missing long path still returnsENOENT, and confirms a trailing-slash directory stat remains a directory.Tested
python3 tools/check_conventions.py --base f51724078f975a60c8f9985e547b6259acdcab64passed locally.git diff --checkpassed locally.3d18c946f7270678256683ec8a5fbf1989c55803passed the full relinker/system-library build and 30 focused CTest runs, including the ordinary long-path stat fixture. A follow-up now preserves already-extended\\?\aliases and adds a regression for them; that follow-up has passed MinGW syntax checks, but its Windows runtime rerun is pending.Checklist
main; no open PR implements long-pathsceKernelStatsupport.