summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorge Hazan <george.hazan@gmail.com>2013-08-03 12:37:31 +0000
committerGeorge Hazan <george.hazan@gmail.com>2013-08-03 12:37:31 +0000
commit5269daf337ff67b0a804e7c63909a800b335a8db (patch)
tree2319f71980ec8ab8f5518944d45f19eca87f943b
parent9e1a2beaf1db681e6f0108d62f30e86a76bb6e9f (diff)
various leak fixes
git-svn-id: http://svn.miranda-ng.org/main/trunk@5563 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
-rw-r--r--plugins/TabSRMM/src/tabctrl.cpp8
-rw-r--r--plugins/TabSRMM/src/themes.cpp2
-rw-r--r--src/mir_core/db.cpp13
3 files changed, 15 insertions, 8 deletions
diff --git a/plugins/TabSRMM/src/tabctrl.cpp b/plugins/TabSRMM/src/tabctrl.cpp
index 4d8bd97029..b82f1c9b0e 100644
--- a/plugins/TabSRMM/src/tabctrl.cpp
+++ b/plugins/TabSRMM/src/tabctrl.cpp
@@ -1412,12 +1412,10 @@ void TSAPI FreeTabConfig()
if (PluginConfig.tabConfig.m_hMenuFont)
DeleteObject(PluginConfig.tabConfig.m_hMenuFont);
- for (int i=0; i < 4; i++) {
- if (PluginConfig.tabConfig.m_brushes[i]) {
+ for (int i=0; i < SIZEOF(PluginConfig.tabConfig.m_brushes); i++)
+ if (PluginConfig.tabConfig.m_brushes[i])
DeleteObject(PluginConfig.tabConfig.m_brushes[i]);
- PluginConfig.tabConfig.m_brushes[i] = 0;
- }
- }
+
ZeroMemory(&PluginConfig.tabConfig, sizeof(myTabCtrl));
}
diff --git a/plugins/TabSRMM/src/themes.cpp b/plugins/TabSRMM/src/themes.cpp
index ad31a69a00..4812dedb61 100644
--- a/plugins/TabSRMM/src/themes.cpp
+++ b/plugins/TabSRMM/src/themes.cpp
@@ -1167,6 +1167,8 @@ void CSkin::Unload()
::DeleteObject(m_ContainerColorKeyBrush);
if (m_MenuBGBrush)
::DeleteObject(m_MenuBGBrush);
+ if (m_BrushBack)
+ ::DeleteObject(m_BrushBack);
m_ContainerColorKeyBrush = m_MenuBGBrush = 0;
diff --git a/src/mir_core/db.cpp b/src/mir_core/db.cpp
index 6b066e1af8..7d6491c1e0 100644
--- a/src/mir_core/db.cpp
+++ b/src/mir_core/db.cpp
@@ -36,12 +36,14 @@ MIR_CORE_DLL(int) db_get_b(HANDLE hContact, const char *szModule, const char *sz
cgs.szModule = szModule;
cgs.szSetting = szSetting;
cgs.pValue = &dbv;
- if ( !currDb->GetContactSetting(hContact, &cgs))
+ if ( !currDb->GetContactSetting(hContact, &cgs)) {
switch(dbv.type) {
case DBVT_BYTE: return dbv.bVal;
case DBVT_WORD: return BYTE(dbv.wVal);
case DBVT_DWORD: return BYTE(dbv.dVal);
}
+ currDb->FreeVariant(&dbv);
+ }
}
return errorValue;
}
@@ -54,12 +56,14 @@ MIR_CORE_DLL(int) db_get_w(HANDLE hContact, const char *szModule, const char *sz
cgs.szModule = szModule;
cgs.szSetting = szSetting;
cgs.pValue = &dbv;
- if ( !currDb->GetContactSetting(hContact, &cgs))
+ if ( !currDb->GetContactSetting(hContact, &cgs)) {
switch(dbv.type) {
case DBVT_BYTE: return dbv.bVal;
case DBVT_WORD: return dbv.wVal;
case DBVT_DWORD: return WORD(dbv.dVal);
}
+ currDb->FreeVariant(&dbv);
+ }
}
return errorValue;
}
@@ -72,12 +76,15 @@ MIR_CORE_DLL(DWORD) db_get_dw(HANDLE hContact, const char *szModule, const char
cgs.szModule = szModule;
cgs.szSetting = szSetting;
cgs.pValue = &dbv;
- if ( !currDb->GetContactSetting(hContact, &cgs))
+ if ( !currDb->GetContactSetting(hContact, &cgs)) {
switch(dbv.type) {
case DBVT_BYTE: return dbv.bVal;
case DBVT_WORD: return dbv.wVal;
case DBVT_DWORD: return dbv.dVal;
+ default: currDb->FreeVariant(&dbv);
}
+ currDb->FreeVariant(&dbv);
+ }
}
return errorValue;