Lazy initialisation of thread locale.

This commit is contained in:
Alexandre Julliard 2000-07-10 15:23:04 +00:00
parent 4da59ea6dd
commit bec3244f39
1 changed files with 3 additions and 6 deletions

View File

@ -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;
}