From 5142c25982c01f602268f647749957bcf63f7380 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Fri, 18 Jul 2014 21:36:29 +0000 Subject: some resource leaks fixed git-svn-id: http://svn.miranda-ng.org/main/trunk@9855 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- plugins/Variables/src/parse_variables.cpp | 42 +++++++------------------------ 1 file changed, 9 insertions(+), 33 deletions(-) (limited to 'plugins/Variables/src/parse_variables.cpp') diff --git a/plugins/Variables/src/parse_variables.cpp b/plugins/Variables/src/parse_variables.cpp index d8e7b5814f..30136d8068 100644 --- a/plugins/Variables/src/parse_variables.cpp +++ b/plugins/Variables/src/parse_variables.cpp @@ -20,7 +20,7 @@ #include "variables.h" // this is for get and put(s) -static CRITICAL_SECTION csVarRegister; +static mir_cs csVarRegister; static VARIABLEREGISTER *vr = NULL; static int vrCount = 0; @@ -61,35 +61,6 @@ static TCHAR *searchVariableRegister(TCHAR *szName) return NULL; } -int clearVariableRegister(bool bAll) -{ - int count = 0; - mir_cslock lck(csVarRegister); - for (int i = 0; i < vrCount; i++) { - if (!bAll && vr[i].dwOwnerThread != GetCurrentThreadId()) - continue; - - mir_free(vr[i].szName); - mir_free(vr[i].szText); - if (vrCount > 1) { - memcpy(&vr[i], &vr[vrCount-1], sizeof(VARIABLEREGISTER)); - vr = (VARIABLEREGISTER*)mir_realloc(vr, (vrCount-1)*sizeof(VARIABLEREGISTER)); - if (vr == NULL) - return -1; - - vrCount--; - } - else { - mir_free(vr); - vr = NULL; - vrCount = 0; - } - count += 1; - } - - return count; -} - static TCHAR *parsePut(ARGUMENTSINFO *ai) { FORMATINFO fi; @@ -131,11 +102,16 @@ void registerVariablesTokens() registerIntToken(GET, parseGet, TRF_FUNCTION, LPGEN("Variables")"\t(x)\t"LPGEN("variable set by put(s) with name x")); registerIntToken(PUT, parsePut, TRF_FUNCTION, LPGEN("Variables")"\t(x,y)\t"LPGEN("x, and stores y as variable named x"));//TRF_UNPARSEDARGS); registerIntToken(PUTS, parsePuts, TRF_FUNCTION, LPGEN("Variables")"\t(x,y)\t"LPGEN("only stores y as variables x"));//TRF_UNPARSEDARGS); - InitializeCriticalSection(&csVarRegister); } void unregisterVariablesTokens() { - clearVariableRegister(true); - DeleteCriticalSection(&csVarRegister); + mir_cslock lck(csVarRegister); + for (int i = 0; i < vrCount; i++) { + mir_free(vr[i].szName); + mir_free(vr[i].szText); + } + mir_free(vr); + vr = NULL; + vrCount = 0; } -- cgit v1.2.3