Commit bec3244f authored by Alexandre Julliard's avatar Alexandre Julliard

Lazy initialisation of thread locale.

parent 4da59ea6
......@@ -90,7 +90,6 @@ static BOOL THREAD_InitTEB( TEB *teb )
teb->StaticUnicodeString.MaximumLength = sizeof(teb->StaticUnicodeBuffer);
teb->StaticUnicodeString.Buffer = (PWSTR)teb->StaticUnicodeBuffer;
teb->teb_sel = SELECTOR_AllocBlock( teb, 0x1000, SEGMENT_DATA, TRUE, FALSE );
teb->CurrentLocale = GetUserDefaultLCID(); /* for threads in user context */
return (teb->teb_sel != 0);
}
......@@ -272,10 +271,6 @@ static void THREAD_Start(void)
/***********************************************************************
* CreateThread (KERNEL32.63)
*
* NOTE
* this function is not called for the first thread of a process
* do initializations in THREAD_InitTEB
*/
HANDLE WINAPI CreateThread( SECURITY_ATTRIBUTES *sa, DWORD stack,
LPTHREAD_START_ROUTINE start, LPVOID param,
......@@ -858,7 +853,9 @@ VOID WINAPI VWin32_BoostThreadStatic( DWORD threadId, INT boost )
*/
LCID WINAPI GetThreadLocale(void)
{
return NtCurrentTeb()->CurrentLocale;
LCID ret = NtCurrentTeb()->CurrentLocale;
if (!ret) NtCurrentTeb()->CurrentLocale = ret = GetUserDefaultLCID();
return ret;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment