diff options
author | George Hazan <george.hazan@gmail.com> | 2014-07-18 21:36:29 +0000 |
---|---|---|
committer | George Hazan <george.hazan@gmail.com> | 2014-07-18 21:36:29 +0000 |
commit | 5142c25982c01f602268f647749957bcf63f7380 (patch) | |
tree | 77b8088067baa66a823982deb1fda5ac3158b099 /plugins/Variables/src/parse_variables.cpp | |
parent | 62b1f33833883602232b40799f4ca42444e5f928 (diff) |
some resource leaks fixed
git-svn-id: http://svn.miranda-ng.org/main/trunk@9855 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
Diffstat (limited to 'plugins/Variables/src/parse_variables.cpp')
-rw-r--r-- | plugins/Variables/src/parse_variables.cpp | 42 |
1 files changed, 9 insertions, 33 deletions
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;
}
|