Piotr Caban : msvcp90: Added locale_ctor_locale_locale implementation.
Alexandre Julliard
julliard at winehq.org
Thu Sep 6 13:37:22 CDT 2012
Module: wine
Branch: master
Commit: e9b51093deeca572e93906c45fc08f6fefefc728
URL: http://source.winehq.org/git/wine.git/?a=commit;h=e9b51093deeca572e93906c45fc08f6fefefc728
Author: Piotr Caban <piotr at codeweavers.com>
Date: Thu Sep 6 11:42:05 2012 +0200
msvcp90: Added locale_ctor_locale_locale implementation.
---
dlls/msvcp100/locale.c | 19 +++++++++++++++++--
dlls/msvcp90/locale.c | 19 +++++++++++++++++--
2 files changed, 34 insertions(+), 4 deletions(-)
diff --git a/dlls/msvcp100/locale.c b/dlls/msvcp100/locale.c
index 1bba834..55b3134 100644
--- a/dlls/msvcp100/locale.c
+++ b/dlls/msvcp100/locale.c
@@ -8104,8 +8104,23 @@ locale__Locimp* __cdecl locale__Init(void)
DEFINE_THISCALL_WRAPPER(locale_ctor_locale_locale, 16)
locale* __thiscall locale_ctor_locale_locale(locale *this, const locale *loc, const locale *other, category cat)
{
- FIXME("(%p %p %p %d) stub\n", this, loc, other, cat);
- return NULL;
+ _Locinfo locinfo;
+
+ TRACE("(%p %p %p %d)\n", this, loc, other, cat);
+
+ this->ptr = MSVCRT_operator_new(sizeof(locale__Locimp));
+ if(!this->ptr) {
+ ERR("Out of memory\n");
+ throw_exception(EXCEPTION_BAD_ALLOC, NULL);
+ }
+ locale__Locimp_copy_ctor(this->ptr, loc->ptr);
+
+ _Locinfo_ctor_cat_cstr(&locinfo, loc->ptr->catmask, MSVCP_basic_string_char_c_str(&loc->ptr->name));
+ _Locinfo__Addcats(&locinfo, cat & other->ptr->catmask, MSVCP_basic_string_char_c_str(&other->ptr->name));
+ locale__Locimp__Makeloc(&locinfo, cat, this->ptr, other);
+ _Locinfo_dtor(&locinfo);
+
+ return this;
}
/* ??0locale at std@@QAE at ABV01@@Z */
diff --git a/dlls/msvcp90/locale.c b/dlls/msvcp90/locale.c
index 1d9eb33..f5a4534 100644
--- a/dlls/msvcp90/locale.c
+++ b/dlls/msvcp90/locale.c
@@ -8255,8 +8255,23 @@ locale__Locimp* __cdecl locale__Init(void)
DEFINE_THISCALL_WRAPPER(locale_ctor_locale_locale, 16)
locale* __thiscall locale_ctor_locale_locale(locale *this, const locale *loc, const locale *other, category cat)
{
- FIXME("(%p %p %p %d) stub\n", this, loc, other, cat);
- return NULL;
+ _Locinfo locinfo;
+
+ TRACE("(%p %p %p %d)\n", this, loc, other, cat);
+
+ this->ptr = MSVCRT_operator_new(sizeof(locale__Locimp));
+ if(!this->ptr) {
+ ERR("Out of memory\n");
+ throw_exception(EXCEPTION_BAD_ALLOC, NULL);
+ }
+ locale__Locimp_copy_ctor(this->ptr, loc->ptr);
+
+ _Locinfo_ctor_cat_cstr(&locinfo, loc->ptr->catmask, MSVCP_basic_string_char_c_str(&loc->ptr->name));
+ _Locinfo__Addcats(&locinfo, cat & other->ptr->catmask, MSVCP_basic_string_char_c_str(&other->ptr->name));
+ locale__Locimp__Makeloc(&locinfo, cat, this->ptr, other);
+ _Locinfo_dtor(&locinfo);
+
+ return this;
}
/* ??0locale at std@@QAE at ABV01@@Z */
More information about the wine-cvs
mailing list