Article ID: 304497 - Last Review: October 22, 2002 - Revision: 1.0 BUG: _wsetlocale Is Not ThreadsafeThis article was previously published under Q304497 On This PageSYMPTOMS
A heap corruption can occur if _wsetlocale is called simultaneously from multiple threads.
CAUSE_wsetlocale does not synchronize access to a local static variable, outwlocale.
RESOLUTION
To work around this, you must synchronize calls to _wsetlocale.
STATUSMicrosoft has confirmed that this is a bug in the Microsoft products that are listed at the beginning of this article. MORE INFORMATION
The C Runtime locale mechanism in Microsoft Visual C++ is distinct from the locale mechanism in Microsoft Windows. Though Windows supports per-thread locales, C Runtime supports only a single global locale for any program.
If multiple threads call _wsetlocale, then no thread's locale can be trusted. For example, if one thread calls _wsetlocale for French and tries to use that locale for _wcslwr, and another thread calls _wsetlocale for English before the first thread executes the _wcslwr function call, then the first thread uses the English locale instead of the French locale. Steps to Reproduce the Behavior | Article Translations
|

Back to the top
