On Sun May 25 13:31:25 2025 +0000, Alfred Agrell wrote:
You can call a function without public header, just move that prototype to console.c (either near the top, or just before ExA - I don't know what Wine code style says about that). The race happens if two threads read from that console simultaneously, both with nowait; Peek returns for both, thread 1 calls Read, and thread 2 calls Read too and blocks because it's empty. Tests should be run on Windows, yes. That's how we discover which behavior to implement in Wine. We usually SetLastError(0xdeadbeef) before calling something that should (or shouldn't) set the last error, to make sure we're not seeing a leftover error from a previous operation. If PeekW returns false, then you should return false too, not think you're in the *count=0 branch and return true. The code style issue is probably the // comments, we use only /* in Wine. (Also it's spelled that, not tha.)
Actually if it's an exported API it's OK to declare it in a public header.