Module: wine Branch: master Commit: 9ff8da5499130b8fe0abc74b23736f3e4ee5d3d7 URL: http://source.winehq.org/git/wine.git/?a=commit;h=9ff8da5499130b8fe0abc74b23...
Author: Alexandre Julliard julliard@winehq.org Date: Mon Dec 28 17:24:50 2009 +0100
kernel32: Don't store the current codepage in the thread data.
---
dlls/kernel32/kernel_private.h | 3 +-- dlls/kernel32/locale.c | 4 ++-- 2 files changed, 3 insertions(+), 4 deletions(-)
diff --git a/dlls/kernel32/kernel_private.h b/dlls/kernel32/kernel_private.h index 9cd4d74..9ec20d6 100644 --- a/dlls/kernel32/kernel_private.h +++ b/dlls/kernel32/kernel_private.h @@ -27,12 +27,11 @@ struct tagSYSLEVEL;
struct kernel_thread_data { - UINT code_page; /* thread code page */ WORD stack_sel; /* 16-bit stack selector */ WORD htask16; /* Win16 task handle */ DWORD sys_count[4]; /* syslevel mutex entry counters */ struct tagSYSLEVEL *sys_mutex[4]; /* syslevel mutex pointers */ - void *pad[44]; /* change this if you add fields! */ + void *pad[45]; /* change this if you add fields! */ };
static inline struct kernel_thread_data *kernel_get_thread_data(void) diff --git a/dlls/kernel32/locale.c b/dlls/kernel32/locale.c index 834d5b9..d6a8492 100644 --- a/dlls/kernel32/locale.c +++ b/dlls/kernel32/locale.c @@ -222,7 +222,8 @@ static const union cptable *get_codepage_table( unsigned int codepage ) case CP_UTF8: break; case CP_THREAD_ACP: - if (!(codepage = kernel_get_thread_data()->code_page)) return ansi_cptable; + if (NtCurrentTeb()->CurrentLocale == GetUserDefaultLCID()) return ansi_cptable; + codepage = get_lcid_codepage( NtCurrentTeb()->CurrentLocale ); /* fall through */ default: if (codepage == ansi_cptable->info.codepage) return ansi_cptable; @@ -2057,7 +2058,6 @@ BOOL WINAPI SetThreadLocale( LCID lcid ) }
NtCurrentTeb()->CurrentLocale = lcid; - kernel_get_thread_data()->code_page = get_lcid_codepage( lcid ); } return TRUE; }