Hallo,

now I traced down the problem with the req-buffer in
SHELL_SaveRegistry getting overwritten:

At the beginning of the function SHELL_SaveRegistry the request buffer
is retrieved with get_req_buffer(). Some values are initialized and
the Call to PROFILE_GetWineIniBool finally leads to RegOpenKeyExA
where the req buffer is retrieved another time and new values are
written to it.  

Moving PROFILE_GetWineIniBool before the initialization of the other
values does also make the behavious normal.

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.

Bye

Uwe Bonnes                [EMAIL PROTECTED]

Free Software: If you contribute nothing, expect nothing
--

Reply via email to