Commit Graph

38 Commits

Author SHA1 Message Date
Eric Pouech 9b802a3d56 msvcr: Build without -DWINE_NO_LONG_TYPES.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-08 20:24:15 +01:00
Eric Pouech 800971f934 msvcrt: Add cast to avoid 'long' types warning in _beginthreadex.
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-03 21:06:02 +01:00
Arkadiusz Hiler 04bb9112d2 msvcrt: Increase module's reference count before returning from _beginthread[ex]().
Increasing DLL's reference count from the trampoline function makes it
prone to race conditions. The thread can start executing after we have
already returned from _beginthread[ex]() and the DLL might have been
freed.

Fixes rare crash on launch with Baldur's Gate 3.

Signed-off-by: Arkadiusz Hiler <ahiler@codeweavers.com>
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-08 20:40:09 +01:00
Arkadiusz Hiler 7435ca8545 msvcrt: Make UCRT _beginthread[ex]() hold the DLL reference.
MSVCRT's _beginthread[ex]() doesn't exhibit the same behavior and using
ThreadExit() does leak the reference.

FreeLibraryAndExit() has to be used because the DLL may be the only user
of the given CRT.

This fixes Baldur's Gate 3 crashing shortly after launch.

Signed-off-by: Arkadiusz Hiler <ahiler@codeweavers.com>
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-05-05 21:52:23 +02:00
Arkadiusz Hiler 9e2fb411db msvcrt: Use trampoline for _beginthreadex().
This way we can call _endthreadex() at the end as stated in the documentation.

Signed-off-by: Arkadiusz Hiler <ahiler@codeweavers.com>
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-05-05 21:52:23 +02:00
Arkadiusz Hiler 80678c4395 msvcrt: Make _beginthread() error out as documented.
msvcrt_set_errno() seems to be doing the right thing in case of too many
threads, invalid parameters, etc.

Signed-off-by: Arkadiusz Hiler <ahiler@codeweavers.com>
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-05-05 21:52:23 +02:00
Arkadiusz Hiler a4af8bb050 msvcrt: Remove return after _endthread().
Signed-off-by: Arkadiusz Hiler <ahiler@codeweavers.com>
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-05-04 21:33:15 +02:00
Piotr Caban d784dbb899 msvcrt: Remove MSVCRT_ prefix from heap.c functions.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-12-01 14:00:31 +01:00
Piotr Caban eeada5682b msvcrt: Remove MSVCRT_ prefix from errno.c functions.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-12-01 14:00:25 +01:00
Piotr Caban 1317b935ef msvcrt: Use errno values from public header.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-11-30 21:36:12 +01:00
Piotr Caban fbc9110d23 msvcrt: Use _beginthread_start_routine_t from public header.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-11-30 21:36:12 +01:00
Alexandre Julliard 0edef50dfa msvcrt: Use the public standard type definitions where possible in msvcrt.h.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-11-20 19:01:04 +01:00
Rémi Bernon a24ad51e3f msvcrt: Make locale and thread helper functions CDECL.
This prevent callers from having to save SSE registers to the stack.

It is for instance the case in MSVCRT__towlower_l, which is called on
every character by MSVCRT__wcsicmp_l.

Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-11-10 17:19:44 +01:00
Alex Henrie 6413d96b6b msvcrt: Don't include MSVC 7.0+ miscellaneous functions in SOs for older DLLs.
Signed-off-by: Alex Henrie <alexhenrie24@gmail.com>
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-01-08 22:47:23 +01:00
Paul Gofman faf59e5f06 msvcrt: Handle of thread created by _beginthread should not be closed on thread detach.
Handle should be closed if _endthread is called or thread function
exits. If thread is terminated by ExitThread or _endthreadex, thread
handle remains valid.

Signed-off-by: Paul Gofman <gofmanp@gmail.com>
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-02-01 21:41:22 +09:00
Alexandre Julliard 0c496f0280 msvcrt: Update comments for non-exported functions. 2014-04-21 14:32:40 +02:00
Piotr Caban e5f68408ed msvcrt: Avoid deadlock when _beginthread is executed inside loader critical section. 2011-06-20 19:32:02 +02:00
Piotr Caban 6e777041b2 msvcrt: Added _getptd implementation. 2011-05-25 11:46:37 +02:00
Piotr Caban e15ac98cbc msvcrt: Change the way locale information is stored in __thread_data. 2011-05-25 11:46:07 +02:00
Piotr Caban 2bcc9d452a msvcrt: Close thread handle when _beginthread is used. 2011-05-25 11:44:28 +02:00
Andrew Talbot a69418c52c msvcrt: Remove unneeded casts. 2008-01-14 13:09:56 +01:00
Alexandre Julliard 24beabfd4e msvcrt: Explicitly specify CDECL calling convention on exported functions. 2006-06-13 11:40:23 +02:00
Jonathan Ernst 360a3f9142 Update the address of the Free Software Foundation. 2006-05-23 14:11:13 +02:00
Alexandre Julliard ad8cb6133e msvcrt: Reimplement rand() and srand() to use per-thread data for the
random seed.
2006-01-14 17:27:28 +01:00
Kevin Koltzau 935dea2fb4 Fix warnings and errors in 64bit. 2005-11-03 13:17:51 +00:00
Dimitrie O. Paun 0377462460 Split the MSVCRT implementation headers from the public headers.
Fix some naming conventions aberrations.
Add tests to ensure consistency between the two sets of symbols.
2004-06-25 01:19:15 +00:00
Michael Stefaniuc 789b4b4204 Compile the msvcrt dll with -DSTRICT. 2002-10-25 03:12:01 +00:00
Alexandre Julliard 14b75f9878 Added definition of msvcrt internal error codes. 2002-07-20 20:30:57 +00:00
Alexandre Julliard 44b4235af2 Fixed per-thread data handling.
Made terminate and unexpected function pointer per-thread.
Added set_se_translator.
2002-07-19 03:24:50 +00:00
Vincent Béron 9a62491660 Removed trailing whitespace. 2002-05-31 23:06:46 +00:00
Alexandre Julliard 0799c1a780 Added LGPL standard comment, and copyright notices where necessary.
Global replacement of debugtools.h by wine/debug.h.
2002-03-09 23:29:33 +00:00
Alexandre Julliard bd1689ec0a Don't include debugtools.h in the header file, moved it to the C files
that need it (and used the new wine/debug.h while we are at it).
2002-01-22 00:57:16 +00:00
Francois Gouget aacc7e3756 _beginthread: Don't store the trampoline on the stack. 2001-10-08 20:32:41 +00:00
Patrik Stridvall 887c035be1 - Added, cleaned up and/or documentated _{begin,end}thread{,ex}.
- _lfind and _ltow are implemented (not stubs).
2001-06-19 03:46:27 +00:00
Francois Gouget e7f75c5dfb Include the msvcrt headers, remove duplicate definitions.
Fixed the signature of a few functions.
Don't use wcs* functions, use *W (from unicode.h) instead.
2001-04-10 23:25:25 +00:00
Francois Gouget 203a8f8290 Adjust the 'MSVCRT_' prefix to match the msvcrt headers
Prefix internal methods with 'msvcrt_' instead of 'MSVCRT_', '__MSVCRT_', etc.
Remove '_cdecl', it's unnecessary
2001-04-10 21:16:07 +00:00
Jon Griffiths 34c786b2db - New msvcrt unicode functions, winapi_check/-Wall/-W clean.
- Forward to ntdll where possible.
- Fix some .spec entries with incorrect parameters.
2001-01-22 02:21:54 +00:00
Jon Griffiths 1db20bfd33 - Migrate CRTDLL to MSVCRT.
- Many fixes and a load of new functions.
2001-01-10 23:59:25 +00:00