From f6c531c4b4559222f6ed166bc3136f929d87706a Mon Sep 17 00:00:00 2001 From: Daniel Lehman Date: Wed, 17 Oct 2012 10:16:56 -0700 Subject: [PATCH] msvcp90: move calling _Decref up to locale_dtor --- dlls/msvcp90/locale.c | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/dlls/msvcp90/locale.c b/dlls/msvcp90/locale.c index 948f5a5..62c7f92 100644 --- a/dlls/msvcp90/locale.c +++ b/dlls/msvcp90/locale.c @@ -7846,18 +7846,15 @@ 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) { - TRACE("(%p)\n", this); + MSVCP_size_t i; - if(locale_facet__Decref(&this->facet)) { - MSVCP_size_t i; - for(i=0; ifacet_cnt; i++) - if(this->facetvec[i] && locale_facet__Decref(this->facetvec[i])) - call_locale_facet_vector_dtor(this->facetvec[i], 1); + TRACE("(%p)\n", this); + for(i=0; ifacet_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); - } + MSVCRT_operator_delete(this->facetvec); + MSVCP_basic_string_char_dtor(&this->name); } /* ?_Locimp_dtor@_Locimp@locale@std@@CAXPAV123@@Z */ @@ -8381,8 +8378,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 */ -- 1.7.12.3