Module: wine Branch: master Commit: 415d3a2425a037b1ec458106cff1efd3f2e2c857 URL: http://source.winehq.org/git/wine.git/?a=commit;h=415d3a2425a037b1ec458106cf...
Author: Daniel Lehman dlehman@esri.com Date: Wed Oct 17 12:52:50 2012 -0700
msvcp: Free facet and _Locimp in Locimp dtor.
---
dlls/msvcp100/locale.c | 22 ++++++++++++---------- dlls/msvcp60/locale.c | 22 ++++++++++++---------- dlls/msvcp71/locale.c | 22 ++++++++++++---------- dlls/msvcp90/locale.c | 23 +++++++++++++---------- 4 files changed, 49 insertions(+), 40 deletions(-)
diff --git a/dlls/msvcp100/locale.c b/dlls/msvcp100/locale.c index 1d03964..5c2d05c 100644 --- a/dlls/msvcp100/locale.c +++ b/dlls/msvcp100/locale.c @@ -7230,17 +7230,17 @@ locale__Locimp* __cdecl locale__Locimp__Locimp_ctor(locale__Locimp *this, const DEFINE_THISCALL_WRAPPER(locale__Locimp_dtor, 4) void __thiscall locale__Locimp_dtor(locale__Locimp *this) { + MSVCP_size_t i; + TRACE("(%p)\n", this);
- if(locale_facet__Decref(&this->facet)) { - MSVCP_size_t i; - for(i=0; i<this->facet_cnt; i++) - if(this->facetvec[i] && locale_facet__Decref(this->facetvec[i])) - call_locale_facet_vector_dtor(this->facetvec[i], 0); + locale_facet_dtor(&this->facet); + for(i=0; i<this->facet_cnt; i++) + if(this->facetvec[i] && locale_facet__Decref(this->facetvec[i])) + call_locale_facet_vector_dtor(this->facetvec[i], 1);
- MSVCRT_operator_delete(this->facetvec); - _Yarn_char_dtor(&this->name); - } + MSVCRT_operator_delete(this->facetvec); + _Yarn_char_dtor(&this->name); }
/* ?_Locimp_dtor@_Locimp@locale@std@@CAXPAV123@@Z */ @@ -7302,7 +7302,7 @@ void __cdecl locale__Locimp__Locimp_Addfac(locale__Locimp *locimp, locale_facet }
if(locimp->facetvec[id] && locale_facet__Decref(locimp->facetvec[id])) - call_locale_facet_vector_dtor(locimp->facetvec[id], 0); + call_locale_facet_vector_dtor(locimp->facetvec[id], 1);
locimp->facetvec[id] = facet; if(facet) @@ -7678,8 +7678,10 @@ locale* locale_ctor(locale *this) void locale_dtor(locale *this) { TRACE("(%p)\n", this); - if(this->ptr) + if(this->ptr && locale_facet__Decref(&this->ptr->facet)) { locale__Locimp_dtor(this->ptr); + MSVCRT_operator_delete(this->ptr); + } }
/* ??4locale@std@@QAEAAV01@ABV01@@Z */ diff --git a/dlls/msvcp60/locale.c b/dlls/msvcp60/locale.c index 54e717c..2fc9bd0 100644 --- a/dlls/msvcp60/locale.c +++ b/dlls/msvcp60/locale.c @@ -7240,17 +7240,17 @@ static locale__Locimp* locale__Locimp_copy_ctor(locale__Locimp *this, const loca /* ??1_Locimp@locale@std@@MEAA@XZ */ static void locale__Locimp_dtor(locale__Locimp *this) { + MSVCP_size_t i; + TRACE("(%p)\n", this);
- if(locale_facet__Decref(&this->facet)) { - MSVCP_size_t i; - for(i=0; i<this->facet_cnt; i++) - if(this->facetvec[i] && locale_facet__Decref(this->facetvec[i])) - call_locale_facet_vector_dtor(this->facetvec[i], 0); + locale_facet_dtor(&this->facet); + for(i=0; i<this->facet_cnt; i++) + if(this->facetvec[i] && locale_facet__Decref(this->facetvec[i])) + call_locale_facet_vector_dtor(this->facetvec[i], 1);
- MSVCRT_operator_delete(this->facetvec); - basic_string_char_dtor(&this->name); - } + MSVCRT_operator_delete(this->facetvec); + basic_string_char_dtor(&this->name); }
DEFINE_THISCALL_WRAPPER(locale__Locimp_vector_dtor, 8) @@ -7305,7 +7305,7 @@ static void locale__Locimp__Locimp_Addfac(locale__Locimp *locimp, locale_facet * }
if(locimp->facetvec[id] && locale_facet__Decref(locimp->facetvec[id])) - call_locale_facet_vector_dtor(locimp->facetvec[id], 0); + call_locale_facet_vector_dtor(locimp->facetvec[id], 1);
locimp->facetvec[id] = facet; if(facet) @@ -7758,8 +7758,10 @@ DEFINE_THISCALL_WRAPPER(locale_dtor, 4) void __thiscall locale_dtor(locale *this) { TRACE("(%p)\n", this); - if(this->ptr) + if(this->ptr && locale_facet__Decref(&this->ptr->facet)) { locale__Locimp_dtor(this->ptr); + MSVCRT_operator_delete(this); + } }
/* ??4locale@std@@QAEAAV01@ABV01@@Z */ diff --git a/dlls/msvcp71/locale.c b/dlls/msvcp71/locale.c index 75570c8..658cdb8 100644 --- a/dlls/msvcp71/locale.c +++ b/dlls/msvcp71/locale.c @@ -7614,17 +7614,17 @@ locale__Locimp* __thiscall locale__Locimp_copy_ctor(locale__Locimp *this, const /* ??1_Locimp@locale@std@@MEAA@XZ */ static void locale__Locimp_dtor(locale__Locimp *this) { + MSVCP_size_t i; + TRACE("(%p)\n", this);
- if(locale_facet__Decref(&this->facet)) { - MSVCP_size_t i; - for(i=0; i<this->facet_cnt; i++) - if(this->facetvec[i] && locale_facet__Decref(this->facetvec[i])) - call_locale_facet_vector_dtor(this->facetvec[i], 0); + locale_facet_dtor(&this->facet); + for(i=0; i<this->facet_cnt; i++) + if(this->facetvec[i] && locale_facet__Decref(this->facetvec[i])) + call_locale_facet_vector_dtor(this->facetvec[i], 1);
- MSVCRT_operator_delete(this->facetvec); - MSVCP_basic_string_char_dtor(&this->name); - } + MSVCRT_operator_delete(this->facetvec); + MSVCP_basic_string_char_dtor(&this->name); }
DEFINE_THISCALL_WRAPPER(locale__Locimp_vector_dtor, 8) @@ -7679,7 +7679,7 @@ static void locale__Locimp__Locimp_Addfac(locale__Locimp *locimp, locale_facet * }
if(locimp->facetvec[id] && locale_facet__Decref(locimp->facetvec[id])) - call_locale_facet_vector_dtor(locimp->facetvec[id], 0); + call_locale_facet_vector_dtor(locimp->facetvec[id], 1);
locimp->facetvec[id] = facet; if(facet) @@ -8133,8 +8133,10 @@ DEFINE_THISCALL_WRAPPER(locale_dtor, 4) void __thiscall locale_dtor(locale *this) { TRACE("(%p)\n", this); - if(this->ptr) + if(this->ptr && locale_facet__Decref(&this->ptr->facet)) { locale__Locimp_dtor(this->ptr); + MSVCRT_operator_delete(this); + } }
/* ??4locale@std@@QAEAAV01@ABV01@@Z */ diff --git a/dlls/msvcp90/locale.c b/dlls/msvcp90/locale.c index 1725900..c581d9c 100644 --- a/dlls/msvcp90/locale.c +++ b/dlls/msvcp90/locale.c @@ -7846,17 +7846,17 @@ locale__Locimp* __cdecl locale__Locimp__Locimp_ctor(locale__Locimp *this, const DEFINE_THISCALL_WRAPPER(locale__Locimp_dtor, 4) void __thiscall locale__Locimp_dtor(locale__Locimp *this) { + MSVCP_size_t i; + TRACE("(%p)\n", this);
- if(locale_facet__Decref(&this->facet)) { - MSVCP_size_t i; - for(i=0; i<this->facet_cnt; i++) - if(this->facetvec[i] && locale_facet__Decref(this->facetvec[i])) - call_locale_facet_vector_dtor(this->facetvec[i], 0); + locale_facet_dtor(&this->facet); + for(i=0; i<this->facet_cnt; i++) + if(this->facetvec[i] && locale_facet__Decref(this->facetvec[i])) + call_locale_facet_vector_dtor(this->facetvec[i], 1);
- MSVCRT_operator_delete(this->facetvec); - MSVCP_basic_string_char_dtor(&this->name); - } + MSVCRT_operator_delete(this->facetvec); + MSVCP_basic_string_char_dtor(&this->name); }
/* ?_Locimp_dtor@_Locimp@locale@std@@CAXPAV123@@Z */ @@ -7918,7 +7918,7 @@ void __cdecl locale__Locimp__Locimp_Addfac(locale__Locimp *locimp, locale_facet }
if(locimp->facetvec[id] && locale_facet__Decref(locimp->facetvec[id])) - call_locale_facet_vector_dtor(locimp->facetvec[id], 0); + call_locale_facet_vector_dtor(locimp->facetvec[id], 1);
locimp->facetvec[id] = facet; if(facet) @@ -8380,8 +8380,11 @@ DEFINE_THISCALL_WRAPPER(locale_dtor, 4) void __thiscall locale_dtor(locale *this) { TRACE("(%p)\n", this); - if(this->ptr) + if(this->ptr && locale_facet__Decref(&this->ptr->facet)) + { locale__Locimp_dtor(this->ptr); + MSVCRT_operator_delete(this->ptr); + } }
/* ??4locale@std@@QAEAAV01@ABV01@@Z */