On 05/21/15 06:42, Nikolay Sivov wrote:
On 20.05.2015 23:18, Piotr Caban wrote:
dlls/msvcp110/msvcp110.spec | 4 +-- dlls/msvcp120/msvcp120.spec | 4 +-- dlls/msvcp120/tests/msvcp120.c | 55 +++++++++++++++++++++++++++++++++++++ dlls/msvcp120_app/msvcp120_app.spec | 4 +-- dlls/msvcp90/misc.c | 35 +++++++++++++++++++++++ 5 files changed, 96 insertions(+), 6 deletions(-)
You sure it's not a wrapper around InitOnce* calls from kernel32?
Yes, there are few reasons why it can't be used here. The problem is that there's no enough space to hold INIT_ONCE structure in first argument (that is DWORD sized). Also the test checks if the parameter is changed while running the "execute once" function and it's not touched until the init function returns. I guess that MicroSoft didn't use the function because of compatibility with older operating systems. Hopefully they will optimize the function in future versions of msvcp.