On Mon, 3 Apr 2000, Uwe Bonnes wrote:
> But this seems to be a general issue. If after initialization of some
> value in the request buffer a function calls somehow results in
> another server call, these initialized values may get silently
> overwritten.
>
> How to tackle that problem? Should server calls be stackable? Put a
> CriticalSection around the server call? But this is a server call
> itself. Check some usage count? But it should probably be thread
> specific too. Or carefully check the code that after some
> initialization no other server call is done? But both latter solutions
> will give many wrong alarms as we might request the buffer much
> earlier then we initializes the values.
I'll try to spare Alexandre the trouble of answering this one. Thread
safety is not a problem, because the server request buffers are
per-thread. It makes no sense to make requests stackable, it's much better
to just fill the buffer right before the server request is to be made,
maybe even in a separate function just in case. Pretty much all Wine code
do it right, so a retrospective careful check is not necessary...
...apart from that Alexandre fixed a winsock accept() problem just after
the release, where I had goofed up on exactly this issue, that is...