Article ID: 304497 - View products that this article applies to.
This article was previously published under Q304497
A heap corruption can occur if _wsetlocale is called simultaneously from multiple threads.
_wsetlocale does not synchronize access to a local static variable, outwlocale.
Microsoft has confirmed that this is a bug in the Microsoft products that are listed at the beginning of this article.
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 ID: 304497 - Last Review: October 22, 2002 - Revision: 1.0
Retired KB Content Disclaimer
This article was written about products for which Microsoft no longer offers support. Therefore, this article is offered "as is" and will no longer be updated.
Contact us for more help