Alexandre Julliard : msvcp90: Avoid using get_current_locale that doesn' t exist in old msvcrt versions.
Alexandre Julliard
julliard at winehq.org
Mon Jan 13 12:46:32 CST 2014
Module: wine
Branch: master
Commit: c2b0732108ec9eb59fb26142abbfc5868caf7bfc
URL: http://source.winehq.org/git/wine.git/?a=commit;h=c2b0732108ec9eb59fb26142abbfc5868caf7bfc
Author: Alexandre Julliard <julliard at winehq.org>
Date: Mon Jan 13 12:51:53 2014 +0100
msvcp90: Avoid using get_current_locale that doesn't exist in old msvcrt versions.
---
dlls/msvcp90/locale.c | 27 ++++++++++-----------------
1 file changed, 10 insertions(+), 17 deletions(-)
diff --git a/dlls/msvcp90/locale.c b/dlls/msvcp90/locale.c
index f428396..0ae1d8d 100644
--- a/dlls/msvcp90/locale.c
+++ b/dlls/msvcp90/locale.c
@@ -43,6 +43,8 @@ char* __cdecl _Getdays(void);
char* __cdecl _Getmonths(void);
void* __cdecl _Gettnames(void);
unsigned int __cdecl ___lc_codepage_func(void);
+int __cdecl ___lc_collate_cp_func(void);
+const unsigned short* __cdecl __pctype_func(void);
const locale_facet* __thiscall locale__Getfacet(const locale*, MSVCP_size_t);
MSVCP_size_t __cdecl _Strftime(char*, MSVCP_size_t, const char*,
const struct tm*, struct __lc_time_data*);
@@ -589,13 +591,11 @@ ULONGLONG __cdecl _Getcoll(void)
_Collvec collvec;
ULONGLONG ull;
} ret;
- _locale_t locale = _get_current_locale();
TRACE("\n");
- ret.collvec.page = locale->locinfo->lc_collate_cp;
- ret.collvec.handle = locale->locinfo->lc_handle[LC_COLLATE];
- _free_locale(locale);
+ ret.collvec.page = ___lc_collate_cp_func();
+ ret.collvec.handle = ___lc_handle_func()[LC_COLLATE];
return ret.ull;
}
@@ -612,22 +612,17 @@ _Collvec* __thiscall _Locinfo__Getcoll(const _Locinfo *this, _Collvec *ret)
/* _Getctype */
_Ctypevec* __cdecl _Getctype(_Ctypevec *ret)
{
- _locale_t locale = _get_current_locale();
short *table;
TRACE("\n");
- ret->page = locale->locinfo->lc_codepage;
- ret->handle = locale->locinfo->lc_handle[LC_COLLATE];
+ ret->page = ___lc_codepage_func();
+ ret->handle = ___lc_handle_func()[LC_COLLATE];
ret->delfl = TRUE;
table = malloc(sizeof(short[256]));
- if(!table) {
- _free_locale(locale);
- throw_exception(EXCEPTION_BAD_ALLOC, NULL);
- }
- memcpy(table, locale->locinfo->pctype, sizeof(short[256]));
+ if(!table) throw_exception(EXCEPTION_BAD_ALLOC, NULL);
+ memcpy(table, __pctype_func(), sizeof(short[256]));
ret->table = table;
- _free_locale(locale);
return ret;
}
@@ -642,7 +637,6 @@ _Ctypevec* __thiscall _Locinfo__Getctype(const _Locinfo *this, _Ctypevec *ret)
/* _Getcvt */
ULONGLONG __cdecl _Getcvt(void)
{
- _locale_t locale = _get_current_locale();
union {
_Cvtvec cvtvec;
ULONGLONG ull;
@@ -650,9 +644,8 @@ ULONGLONG __cdecl _Getcvt(void)
TRACE("\n");
- ret.cvtvec.page = locale->locinfo->lc_codepage;
- ret.cvtvec.handle = locale->locinfo->lc_handle[LC_CTYPE];
- _free_locale(locale);
+ ret.cvtvec.page = ___lc_codepage_func();
+ ret.cvtvec.handle = ___lc_handle_func()[LC_CTYPE];
return ret.ull;
}
More information about the wine-cvs
mailing list