strtof and wcstof now set ERANGE for a decimal input whose nonzero
subnormal result is inexact, never for a hexadecimal nonzero subnormal,
and keep it for underflow to zero and overflow. This is what the libc.prx
bundled with PPSA08427 (J03547016) and PPSA03671 (J03848509) do when run
side by side with this libc. The earlier commit followed
libSceLibcInternal's _Stof, which leaves errno alone for hexadecimal under-
and overflow, but titles import these NIDs from their own libc.prx.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01RbLgECLQ2bpDM7oe2urGZK
PS5VR (PPSA99177) reads sysctl {CTL_KERN, KERN_PROC, KERN_PROC_ENV, pid}
for its own pid at start-up and stopped on "unsupported MIB 1.14.35.<pid>".
The call now returns the empty start-up environment that environ and
libc's getenv also begin with, and follows FreeBSD 11's
sysctl_kern_proc_env for the errors: EINVAL for a MIB without exactly one
pid, ESRCH for another pid or -1, EPERM for a write.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
On Wayland with the NVIDIA driver the surface reports minImageCount 2.
The presenter acquires with a zero timeout, so once both images were
queued no image was ever free again: PPSA29340 flipped at 60 per second
but presented 0 frames per 10 s (599 dropped: no free swapchain image)
and its window stayed black. Ask for minImageCount + 1, capped by
maxImageCount when the surface has one.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01RbLgECLQ2bpDM7oe2urGZK
The test configures a CMake fixture several times and ran as one CTest
case: 78 s on a Windows 11 machine, and the Windows CI job warns that it
took 66.9 s against the 30 s limit in CONTRIBUTING.md. Its slowest method
alone took 27 s because it edited six sources in turn.
Split that method into one test per source and register the file as seven
CTest shards (--shard INDEX/COUNT, as the conventions_function_bodies
tests do). The first shard keeps the shader_cache_runtime_sources name. A
self-test checks that every shard count runs each case exactly once.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
autorun_exit_tests built its own path from argv[0] and
windows_dependency_diagnostics_tests from GetModuleFileNameA. Both are in
the ANSI code page on Windows, but MinGW's std::filesystem::path reads a
narrow string as UTF-8, so in a build directory with characters such as
"ü" both tests stopped with "Cannot convert character sequence: Illegal
byte sequence" before testing anything (windows_diagnostic_fixture_isolation
runs the second one).
Take the path from GetModuleFileNameW on Windows. The relinker and the
generated diagnostic runner already use UTF-8 and wide APIs, so nothing
else changes.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
The relinker writes paths to stdout, stderr and its patch manifest as
UTF-8, but seven test scripts read them with the locale encoding. On
Windows that is the ANSI code page, so with a build directory such as
C:/Users/José/AnyPS5/build (the tests keep their temporary files under
the build tree) the decoded paths no longer match and game_patches,
guest_needed_modules, guest_symbol_names, input_file,
input_preservation, relinker_executables and tls_diagnostics fail.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
dlltool names its temporary assembler files after the output path and
creates them in the build directory, so the windows_stdio_msvcrt_import.a
step fails with "failed to open temporary head file" once that file name
plus the directory exceeds MAX_PATH: with a build directory of 96
characters or more. Every other target still builds there.
Pass --temp-prefix so the temporary files keep a fixed short name in the
same directory.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Both modules route every decode export through one worker. Its checks
run in this order: state, packet, size, PCM pointer, capacity, then a
priority outside 20..100 (+0xA), then the state check (+1). Decode passes
priority 40.
The float exports decode 16-bit PCM into capacity / 4 * 2 bytes of the
caller's buffer and widen each sample in place, dividing positive
samples by 32767 and the rest by 32768. They return the float byte count.
The OpusDec *AndTimeout exports take a timeout for the AJM batch wait and
a pointer that receives the batch ID only when that wait fails. The host
decode is synchronous, so neither is used; the debt entry records this.
Read from libSceOpusDec.sprx and libSceOpusCeltDec.sprx, firmware 12.00,
not measured on a console.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01SNqSvnFwRBz3D76n476yw6