diff options
author | George Hazan <ghazan@miranda.im> | 2023-03-18 17:51:45 +0300 |
---|---|---|
committer | George Hazan <ghazan@miranda.im> | 2023-03-18 17:51:45 +0300 |
commit | 5dd6a8093a3390e52fbddf4ad099c076ebd897c7 (patch) | |
tree | a73d2d978435f179de78920fd3fd3153ab1e5f77 | |
parent | 2f44c5207ebad98dbf8d8e5b5d5689f32b01f0dc (diff) |
fixes #3438 (tabSRMM: crash in highlight)
-rw-r--r-- | include/m_chat_int.h | 12 | ||||
-rw-r--r-- | libs/win32/mir_app.lib | bin | 238768 -> 238616 bytes | |||
-rw-r--r-- | libs/win64/mir_app.lib | bin | 235706 -> 235558 bytes | |||
-rw-r--r-- | plugins/Scriver/src/chat.h | 4 | ||||
-rw-r--r-- | plugins/Scriver/src/chat_main.cpp | 2 | ||||
-rw-r--r-- | plugins/Scriver/src/chat_options.cpp | 4 | ||||
-rw-r--r-- | plugins/TabSRMM/src/chat.h | 5 | ||||
-rw-r--r-- | plugins/TabSRMM/src/chat_main.cpp | 2 | ||||
-rw-r--r-- | src/core/stdmsg/src/chat_manager.cpp | 2 | ||||
-rw-r--r-- | src/core/stdmsg/src/stdafx.h | 1 | ||||
-rw-r--r-- | src/mir_app/src/chat.h | 2 | ||||
-rw-r--r-- | src/mir_app/src/chat_manager.cpp | 20 | ||||
-rw-r--r-- | src/mir_app/src/chat_opts.cpp | 2 | ||||
-rw-r--r-- | src/mir_app/src/chat_svc.cpp | 2 | ||||
-rw-r--r-- | src/mir_app/src/mir_app.def | 12 | ||||
-rw-r--r-- | src/mir_app/src/mir_app64.def | 12 |
16 files changed, 30 insertions, 52 deletions
diff --git a/include/m_chat_int.h b/include/m_chat_int.h index a2b9c98587..8d5fa8a393 100644 --- a/include/m_chat_int.h +++ b/include/m_chat_int.h @@ -132,10 +132,10 @@ struct STATUSINFO STATUSINFO *next;
};
-struct MIR_APP_EXPORT GCSessionInfoBase : public MZeroedObject, public MNonCopyable
+struct MIR_APP_EXPORT SESSION_INFO : public MZeroedObject, public MNonCopyable
{
- GCSessionInfoBase();
- ~GCSessionInfoBase();
+ SESSION_INFO();
+ ~SESSION_INFO();
MCONTACT hContact;
@@ -154,6 +154,7 @@ struct MIR_APP_EXPORT GCSessionInfoBase : public MZeroedObject, public MNonCopya int iType;
int iEventCount;
int iStatusCount;
+ int iLogTrayFlags, iLogPopupFlags;
uint16_t wStatus;
uint16_t wState;
@@ -168,7 +169,7 @@ struct MIR_APP_EXPORT GCSessionInfoBase : public MZeroedObject, public MNonCopya USERINFO *pMe;
STATUSINFO *pStatuses;
MODULEINFO *pMI;
- GCSessionInfoBase *pParent;
+ SESSION_INFO *pParent;
LIST<USERINFO> arKeys;
OBJLIST<USERINFO> arUsers;
@@ -249,7 +250,6 @@ struct GlobalLogSettingsBase #ifndef SRMM_OWN_STRUCTURES
struct LOGSTREAMDATA : public GCLogStreamDataBase {};
-struct SESSION_INFO : public GCSessionInfoBase {};
struct MODULEINFO : public GCModuleInfoBase {};
#endif
@@ -262,7 +262,7 @@ struct MODULEINFO : public GCModuleInfoBase {}; struct CHAT_MANAGER_INITDATA
{
GlobalLogSettingsBase *pSettings;
- int cbModuleInfo, cbSession;
+ int cbModuleInfo;
wchar_t *szFontGroup;
int iFontMode;
HPLUGIN pPlugin;
diff --git a/libs/win32/mir_app.lib b/libs/win32/mir_app.lib Binary files differindex 13d274f01f..e00190c13c 100644 --- a/libs/win32/mir_app.lib +++ b/libs/win32/mir_app.lib diff --git a/libs/win64/mir_app.lib b/libs/win64/mir_app.lib Binary files differindex 9fe3b3ff22..99349d01ad 100644 --- a/libs/win64/mir_app.lib +++ b/libs/win64/mir_app.lib diff --git a/plugins/Scriver/src/chat.h b/plugins/Scriver/src/chat.h index 48ad5567d3..194cd2723c 100644 --- a/plugins/Scriver/src/chat.h +++ b/plugins/Scriver/src/chat.h @@ -55,10 +55,6 @@ struct LOGSTREAMDATA : public GCLogStreamDataBase BOOL isFirst;
};
-struct SESSION_INFO : public GCSessionInfoBase
-{
-};
-
struct GlobalLogSettings : public GlobalLogSettingsBase
{
HFONT MessageBoxFont;
diff --git a/plugins/Scriver/src/chat_main.cpp b/plugins/Scriver/src/chat_main.cpp index 4538572531..c5964f3219 100644 --- a/plugins/Scriver/src/chat_main.cpp +++ b/plugins/Scriver/src/chat_main.cpp @@ -145,7 +145,7 @@ static void ShowRoom(SESSION_INFO *si) int Chat_Load()
{
- CHAT_MANAGER_INITDATA data = { &g_Settings, sizeof(MODULEINFO), sizeof(SESSION_INFO), LPGENW("Messaging") L"/" LPGENW("Group chats"), FONTMODE_SKIP, &g_plugin };
+ CHAT_MANAGER_INITDATA data = { &g_Settings, sizeof(MODULEINFO), LPGENW("Messaging") L"/" LPGENW("Group chats"), FONTMODE_SKIP, &g_plugin };
Chat_CustomizeApi(&data);
g_chatApi.MM_CreateModule = MM_CreateModule;
diff --git a/plugins/Scriver/src/chat_options.cpp b/plugins/Scriver/src/chat_options.cpp index f4b5f35669..537d63473e 100644 --- a/plugins/Scriver/src/chat_options.cpp +++ b/plugins/Scriver/src/chat_options.cpp @@ -524,8 +524,8 @@ static INT_PTR CALLBACK DlgProcOptions2(HWND hwndDlg, UINT uMsg, WPARAM wParam, mir_free(pszText);
g_Settings.dwIconFlags = db_get_dw(0, CHAT_MODULE, "IconFlags", 0x0000);
- g_Settings.dwTrayIconFlags = db_get_dw(0, CHAT_MODULE, "TrayIconFlags", 0x1000);
- g_Settings.dwPopupFlags = db_get_dw(0, CHAT_MODULE, "PopupFlags", 0x0000);
+ g_Settings.dwTrayIconFlags = db_get_dw(0, CHAT_MODULE, "TrayIconFlags", GC_EVENT_HIGHLIGHT);
+ g_Settings.dwPopupFlags = db_get_dw(0, CHAT_MODULE, "PopupFlags", GC_EVENT_HIGHLIGHT);
g_Settings.bStripFormat = db_get_b(0, CHAT_MODULE, "TrimFormatting", 0) != 0;
g_Settings.bLogIndentEnabled = (db_get_b(0, CHAT_MODULE, "LogIndentEnabled", 1) != 0) ? TRUE : FALSE;
diff --git a/plugins/TabSRMM/src/chat.h b/plugins/TabSRMM/src/chat.h index 75ceea90cf..08a4bf6a8d 100644 --- a/plugins/TabSRMM/src/chat.h +++ b/plugins/TabSRMM/src/chat.h @@ -50,11 +50,6 @@ struct MODULEINFO : public GCModuleInfoBase wchar_t tszIdleMsg[60];
};
-struct SESSION_INFO : public GCSessionInfoBase
-{
- int iLogTrayFlags, iLogPopupFlags;
-};
-
struct LOGSTREAMDATA : public GCLogStreamDataBase
{
int crCount;
diff --git a/plugins/TabSRMM/src/chat_main.cpp b/plugins/TabSRMM/src/chat_main.cpp index b398955f21..395a51a05e 100644 --- a/plugins/TabSRMM/src/chat_main.cpp +++ b/plugins/TabSRMM/src/chat_main.cpp @@ -353,7 +353,7 @@ int Chat_Load() CheckUpdate();
Utils::RTF_CTableInit();
- CHAT_MANAGER_INITDATA data = { &g_Settings, sizeof(MODULEINFO), sizeof(SESSION_INFO), LPGENW("Message sessions") L"/" LPGENW("Group chats"), FONTMODE_ALTER, &g_plugin };
+ CHAT_MANAGER_INITDATA data = { &g_Settings, sizeof(MODULEINFO), LPGENW("Message sessions") L"/" LPGENW("Group chats"), FONTMODE_ALTER, &g_plugin };
Chat_CustomizeApi(&data);
g_chatApi.CreateNick = OnCreateNick;
diff --git a/src/core/stdmsg/src/chat_manager.cpp b/src/core/stdmsg/src/chat_manager.cpp index b461b91703..d3e0da1969 100644 --- a/src/core/stdmsg/src/chat_manager.cpp +++ b/src/core/stdmsg/src/chat_manager.cpp @@ -208,7 +208,7 @@ void Load_ChatModule() AddIcons();
RegisterFonts();
- CHAT_MANAGER_INITDATA data = { &g_Settings, sizeof(MODULEINFO), sizeof(SESSION_INFO), LPGENW("Message sessions") L"/" LPGENW("Chat module"), FONTMODE_USE, &g_plugin };
+ CHAT_MANAGER_INITDATA data = { &g_Settings, sizeof(MODULEINFO), LPGENW("Message sessions") L"/" LPGENW("Chat module"), FONTMODE_USE, &g_plugin };
Chat_CustomizeApi(&data);
g_chatApi.MM_CreateModule = MM_CreateModule;
diff --git a/src/core/stdmsg/src/stdafx.h b/src/core/stdmsg/src/stdafx.h index 33d557a6a9..8a8633954b 100644 --- a/src/core/stdmsg/src/stdafx.h +++ b/src/core/stdmsg/src/stdafx.h @@ -128,7 +128,6 @@ CTabbedWindow *GetContainer(); /////////////////////////////////////////////////////////////////////////////////////////
struct MODULEINFO : public GCModuleInfoBase {};
-struct SESSION_INFO : public GCSessionInfoBase {};
struct LOGSTREAMDATA : public GCLogStreamDataBase {};
#include "cmdlist.h"
diff --git a/src/mir_app/src/chat.h b/src/mir_app/src/chat.h index baa328fd99..6604acd027 100644 --- a/src/mir_app/src/chat.h +++ b/src/mir_app/src/chat.h @@ -33,7 +33,7 @@ void CheckChatCompatibility(); class CLogWindow : public CSrmmLogWindow {};
extern HPLUGIN g_pChatPlugin;
-extern int g_cbSession, g_cbModuleInfo, g_iFontMode;
+extern int g_cbModuleInfo, g_iFontMode;
extern wchar_t *g_szFontGroup;
extern mir_cs csChat;
diff --git a/src/mir_app/src/chat_manager.cpp b/src/mir_app/src/chat_manager.cpp index 400eb08aca..c978c6fa9a 100644 --- a/src/mir_app/src/chat_manager.cpp +++ b/src/mir_app/src/chat_manager.cpp @@ -122,15 +122,15 @@ static BOOL LM_RemoveAll(LOGINFO **ppLogListStart, LOGINFO **ppLogListEnd) // Session Manager functions
// Keeps track of all sessions and its windows
-GCSessionInfoBase::GCSessionInfoBase() :
+SESSION_INFO::SESSION_INFO() :
arKeys(10, CompareKeys),
arUsers(10, CompareUser)
{}
-GCSessionInfoBase::~GCSessionInfoBase()
+SESSION_INFO::~SESSION_INFO()
{}
-const char *GCSessionInfoBase::getSoundName(int iEventType) const
+const char* SESSION_INFO::SESSION_INFO::getSoundName(int iEventType) const
{
// if sounds are filtered out for this event type, do nothing;
if (!(db_get_dw(0, CHAT_MODULE, "SoundFlags", GC_EVENT_HIGHLIGHT) & iEventType))
@@ -942,19 +942,6 @@ MIR_APP_DLL(CHAT_MANAGER*) Chat_CustomizeApi(const CHAT_MANAGER_INITDATA *pInit) // wipe out old junk
memset((uint8_t*)&g_chatApi + offsetof(CHAT_MANAGER, OnCreateModule), 0, sizeof(CHAT_MANAGER) - offsetof(CHAT_MANAGER, OnCreateModule));
-
- if (g_cbSession) { // reallocate old sessions
- mir_cslock lck(csChat);
-
- LIST<SESSION_INFO> tmp(g_arSessions);
- g_arSessions.destroy();
-
- for (auto &p : tmp) {
- SESSION_INFO *p1 = (SESSION_INFO*)realloc(p, pInit->cbSession);
- memset((uint8_t*)p1 + sizeof(SESSION_INFO), 0, pInit->cbSession - sizeof(SESSION_INFO));
- g_arSessions.insert(p1);
- }
- }
if (g_cbModuleInfo != pInit->cbModuleInfo) { // reallocate old modules
bool bReallocated = false;
@@ -978,7 +965,6 @@ MIR_APP_DLL(CHAT_MANAGER*) Chat_CustomizeApi(const CHAT_MANAGER_INITDATA *pInit) g_Settings = pInit->pSettings;
g_szFontGroup = pInit->szFontGroup;
- g_cbSession = pInit->cbSession;
g_cbModuleInfo = pInit->cbModuleInfo;
g_iFontMode = pInit->iFontMode;
g_pChatPlugin = pInit->pPlugin;
diff --git a/src/mir_app/src/chat_opts.cpp b/src/mir_app/src/chat_opts.cpp index c6ef12ab41..61f7cbadfc 100644 --- a/src/mir_app/src/chat_opts.cpp +++ b/src/mir_app/src/chat_opts.cpp @@ -30,7 +30,7 @@ HICON g_hChatIcons[20]; uint32_t g_dwDiskLogFlags;
HPLUGIN g_pChatPlugin;
GlobalLogSettingsBase *g_Settings;
-int g_cbSession, g_cbModuleInfo = sizeof(MODULEINFO), g_iFontMode;
+int g_cbModuleInfo = sizeof(MODULEINFO), g_iFontMode;
wchar_t *g_szFontGroup;
#define FONTF_BOLD 1
diff --git a/src/mir_app/src/chat_svc.cpp b/src/mir_app/src/chat_svc.cpp index f4df439417..911a04788d 100644 --- a/src/mir_app/src/chat_svc.cpp +++ b/src/mir_app/src/chat_svc.cpp @@ -259,6 +259,8 @@ MIR_APP_DLL(SESSION_INFO*) Chat_NewSession( else
wcsncpy_s(szTemp, si->ptszName, _TRUNCATE);
si->hContact = AddRoom(pszModule, ptszID, szTemp, si->iType);
+ si->iLogPopupFlags = db_get_dw(0, CHAT_MODULE, "PopupFlags", GC_EVENT_HIGHLIGHT);
+ si->iLogTrayFlags = db_get_dw(0, CHAT_MODULE, "TrayIconFlags", GC_EVENT_HIGHLIGHT);
db_set_s(si->hContact, si->pszModule, "Topic", "");
db_unset(si->hContact, "CList", "StatusMsg");
if (si->ptszStatusbarText)
diff --git a/src/mir_app/src/mir_app.def b/src/mir_app/src/mir_app.def index d662635947..b84da6e734 100644 --- a/src/mir_app/src/mir_app.def +++ b/src/mir_app/src/mir_app.def @@ -582,11 +582,11 @@ g_hevEventFiltered @694 NONAME g_hevMarkedRead @695 NONAME
g_hevSettingChanged @696 NONAME
??0GCModuleInfoBase@@QAE@XZ @697 NONAME
-??0GCSessionInfoBase@@QAE@XZ @698 NONAME
+??0SESSION_INFO@@QAE@XZ @698 NONAME
??1GCModuleInfoBase@@QAE@XZ @699 NONAME
-??1GCSessionInfoBase@@QAE@XZ @700 NONAME
-?getUserList@GCSessionInfoBase@@QAEAAU?$OBJLIST@UUSERINFO@@@@XZ @701 NONAME
-?getMe@GCSessionInfoBase@@QBEPAUUSERINFO@@XZ @702 NONAME
+??1SESSION_INFO@@QAE@XZ @700 NONAME
+?getUserList@SESSION_INFO@@QAEAAU?$OBJLIST@UUSERINFO@@@@XZ @701 NONAME
+?getMe@SESSION_INFO@@QBEPAUUSERINFO@@XZ @702 NONAME
?MetaRemoveSubHistory@MDatabaseCommon@@UAGHPAUDBCachedContact@@@Z @703 NONAME
?MetaRemoveSubHistory@MDatabaseReadonly@@UAGHPAUDBCachedContact@@@Z @704 NONAME
Chat_GetGroup @705
@@ -629,7 +629,7 @@ db_mc_tryMeta @732 ?setUString@PROTO_INTERFACE@@QAEXPBD0@Z @742 NONAME
?setUString@CMPluginBase@@QAEXIPBD0@Z @743 NONAME
?setUString@CMPluginBase@@QAEXPBD0@Z @744 NONAME
-?getKeyList@GCSessionInfoBase@@QAEAAU?$LIST@UUSERINFO@@@@XZ @745 NONAME
+?getKeyList@SESSION_INFO@@QAEAAU?$LIST@UUSERINFO@@@@XZ @745 NONAME
PUAddPopup @746
PUAddPopupW @747
PUChangeTextW @748
@@ -746,7 +746,7 @@ _Netlib_GetTlsUnique@12 @831 NONAME ?TrayAlwaysStatus@Clist@@3V?$CMOption@_N@@A @861 NONAME
?Flush@MDatabaseCommon@@UAGHXZ @862 NONAME
?getIcon@CHAT_MANAGER@@QBGPAUHICON__@@H@Z @863 NONAME
-?getSoundName@GCSessionInfoBase@@QBEPBDH@Z @864 NONAME
+?getSoundName@SESSION_INFO@@QBEPBDH@Z @864 NONAME
?Upgrade@DB@@YGPAVMDatabaseCommon@@PB_W@Z @865 NONAME
?IsPluginOnWhiteList@@YG_NPBD@Z @866 NONAME
?SetPluginOnWhiteList@@YGXPBD_N@Z @867 NONAME
diff --git a/src/mir_app/src/mir_app64.def b/src/mir_app/src/mir_app64.def index e88cb7f181..91471cf20e 100644 --- a/src/mir_app/src/mir_app64.def +++ b/src/mir_app/src/mir_app64.def @@ -582,11 +582,11 @@ g_hevEventFiltered @694 NONAME g_hevMarkedRead @695 NONAME
g_hevSettingChanged @696 NONAME
??0GCModuleInfoBase@@QEAA@XZ @697 NONAME
-??0GCSessionInfoBase@@QEAA@XZ @698 NONAME
+??0SESSION_INFO@@QEAA@XZ @698 NONAME
??1GCModuleInfoBase@@QEAA@XZ @699 NONAME
-??1GCSessionInfoBase@@QEAA@XZ @700 NONAME
-?getUserList@GCSessionInfoBase@@QEAAAEAU?$OBJLIST@UUSERINFO@@@@XZ @701 NONAME
-?getMe@GCSessionInfoBase@@QEBAPEAUUSERINFO@@XZ @702 NONAME
+??1SESSION_INFO@@QEAA@XZ @700 NONAME
+?getUserList@SESSION_INFO@@QEAAAEAU?$OBJLIST@UUSERINFO@@@@XZ @701 NONAME
+?getMe@SESSION_INFO@@QEBAPEAUUSERINFO@@XZ @702 NONAME
?MetaRemoveSubHistory@MDatabaseCommon@@UEAAHPEAUDBCachedContact@@@Z @703 NONAME
?MetaRemoveSubHistory@MDatabaseReadonly@@UEAAHPEAUDBCachedContact@@@Z @704 NONAME
Chat_GetGroup @705
@@ -629,7 +629,7 @@ db_mc_tryMeta @732 ?setUString@PROTO_INTERFACE@@QEAAXPEBD0@Z @742 NONAME
?setUString@CMPluginBase@@QEAAXIPEBD0@Z @743 NONAME
?setUString@CMPluginBase@@QEAAXPEBD0@Z @744 NONAME
-?getKeyList@GCSessionInfoBase@@QEAAAEAU?$LIST@UUSERINFO@@@@XZ @745 NONAME
+?getKeyList@SESSION_INFO@@QEAAAEAU?$LIST@UUSERINFO@@@@XZ @745 NONAME
PUAddPopup @746
PUAddPopupW @747
PUChangeTextW @748
@@ -746,7 +746,7 @@ Netlib_GetTlsUnique @831 NONAME ?TrayAlwaysStatus@Clist@@3V?$CMOption@_N@@A @861 NONAME
?Flush@MDatabaseCommon@@UEAAHXZ @862 NONAME
?getIcon@CHAT_MANAGER@@QEBAPEAUHICON__@@H@Z @863 NONAME
-?getSoundName@GCSessionInfoBase@@QEBAPEBDH@Z @864 NONAME
+?getSoundName@SESSION_INFO@@QEBAPEBDH@Z @864 NONAME
?Upgrade@DB@@YAPEAVMDatabaseCommon@@PEB_W@Z @865 NONAME
?IsPluginOnWhiteList@@YA_NPEBD@Z @866 NONAME
?SetPluginOnWhiteList@@YAXPEBD_N@Z @867 NONAME
|