From a3e2c68f986308997e764f0c383441531c61949a Mon Sep 17 00:00:00 2001 From: Francois Gouget Date: Thu, 17 Nov 2011 09:53:01 +0100 Subject: [PATCH] msxml3: Delete the dispex static critical section when unloading the dll. --- dlls/msxml3/dispex.c | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/dlls/msxml3/dispex.c b/dlls/msxml3/dispex.c index 3789134e19d..6c74173c9f5 100644 --- a/dlls/msxml3/dispex.c +++ b/dlls/msxml3/dispex.c @@ -45,6 +45,16 @@ WINE_DEFAULT_DEBUG_CHANNEL(msxml); +static CRITICAL_SECTION cs_dispex_static_data; +static CRITICAL_SECTION_DEBUG cs_dispex_static_data_dbg = +{ + 0, 0, &cs_dispex_static_data, + { &cs_dispex_static_data_dbg.ProcessLocksList, &cs_dispex_static_data_dbg.ProcessLocksList }, + 0, 0, { (DWORD_PTR)(__FILE__ ": dispex_static_data") } +}; +static CRITICAL_SECTION cs_dispex_static_data = { &cs_dispex_static_data_dbg, -1, 0, 0, 0, 0 }; + + enum lib_version_t { LibXml = 0, @@ -206,6 +216,8 @@ void release_typelib(void) for(i=0; i < sizeof(typelib)/sizeof(*typelib); i++) if(typelib[i]) ITypeLib_Release(typelib[i]); + + DeleteCriticalSection(&cs_dispex_static_data); } static void add_func_info(dispex_data_t *data, DWORD *size, tid_t tid, DISPID id, ITypeInfo *dti) @@ -301,16 +313,6 @@ static dispex_data_t *preprocess_dispex_data(DispatchEx *This) return data; } -static CRITICAL_SECTION cs_dispex_static_data; -static CRITICAL_SECTION_DEBUG cs_dispex_static_data_dbg = -{ - 0, 0, &cs_dispex_static_data, - { &cs_dispex_static_data_dbg.ProcessLocksList, &cs_dispex_static_data_dbg.ProcessLocksList }, - 0, 0, { (DWORD_PTR)(__FILE__ ": dispex_static_data") } -}; -static CRITICAL_SECTION cs_dispex_static_data = { &cs_dispex_static_data_dbg, -1, 0, 0, 0, 0 }; - - static dispex_data_t *get_dispex_data(DispatchEx *This) { if(This->data->data) -- 2.11.4.GIT