diff options
author | George Hazan <george.hazan@gmail.com> | 2024-03-15 18:44:23 +0300 |
---|---|---|
committer | George Hazan <george.hazan@gmail.com> | 2024-03-15 18:44:23 +0300 |
commit | 478b3261723a914310271ece3ef91abc9ce2b4cc (patch) | |
tree | 8d17bcee5692fe8085f624533c1f4f796754bbf1 /protocols | |
parent | f621aac0cb42e0de9de6f1f05a0b4383eb791930 (diff) |
fixes #4214 ([Telegram] Crash)
Diffstat (limited to 'protocols')
-rw-r--r-- | protocols/ICQ-WIM/src/proto.cpp | 5 | ||||
-rw-r--r-- | protocols/ICQ-WIM/src/proto.h | 2 | ||||
-rw-r--r-- | protocols/ICQ-WIM/src/server.cpp | 2 | ||||
-rw-r--r-- | protocols/JabberG/src/jabber_file.cpp | 5 | ||||
-rw-r--r-- | protocols/JabberG/src/jabber_proto.h | 2 | ||||
-rw-r--r-- | protocols/Telegram/src/avatars.cpp | 5 | ||||
-rw-r--r-- | protocols/Telegram/src/proto.h | 2 | ||||
-rw-r--r-- | protocols/Telegram/src/utils.cpp | 6 |
8 files changed, 14 insertions, 15 deletions
diff --git a/protocols/ICQ-WIM/src/proto.cpp b/protocols/ICQ-WIM/src/proto.cpp index 00f37bfa92..5c93aa0147 100644 --- a/protocols/ICQ-WIM/src/proto.cpp +++ b/protocols/ICQ-WIM/src/proto.cpp @@ -174,11 +174,12 @@ bool CIcqProto::OnContactDeleted(MCONTACT hContact, uint32_t flags) return true;
}
-void CIcqProto::OnReceiveOfflineFile(DB::FILE_BLOB &blob, void *ft)
+void CIcqProto::OnReceiveOfflineFile(DB::FILE_BLOB &blob)
{
- if (auto *pFileInfo = (IcqFileInfo *)ft) {
+ if (auto *pFileInfo = (IcqFileInfo *)blob.getUserInfo()) {
blob.setUrl(pFileInfo->szOrigUrl);
blob.setSize(pFileInfo->dwFileSize);
+ delete pFileInfo;
}
}
diff --git a/protocols/ICQ-WIM/src/proto.h b/protocols/ICQ-WIM/src/proto.h index 8416e344a7..514787102a 100644 --- a/protocols/ICQ-WIM/src/proto.h +++ b/protocols/ICQ-WIM/src/proto.h @@ -450,7 +450,7 @@ class CIcqProto : public PROTO<CIcqProto> void OnEventEdited(MCONTACT, MEVENT, const DBEVENTINFO &dbei) override;
void OnMarkRead(MCONTACT, MEVENT) override;
void OnModulesLoaded() override;
- void OnReceiveOfflineFile(DB::FILE_BLOB &blob, void *ft) override;
+ void OnReceiveOfflineFile(DB::FILE_BLOB &blob) override;
void OnSendOfflineFile(DB::EventInfo &dbei, DB::FILE_BLOB &blob, void *ft) override;
void OnShutdown() override;
diff --git a/protocols/ICQ-WIM/src/server.cpp b/protocols/ICQ-WIM/src/server.cpp index 506b0651fb..5d758f6b11 100644 --- a/protocols/ICQ-WIM/src/server.cpp +++ b/protocols/ICQ-WIM/src/server.cpp @@ -616,7 +616,7 @@ void CIcqProto::ParseMessage(MCONTACT hContact, __int64 &lastMsgId, const JSONNo DB::FILE_BLOB blob(pFileInfo, pszShortName, T2Utf(pFileInfo->wszDescr));
if (hOldEvent) {
- OnReceiveOfflineFile(blob, pFileInfo);
+ OnReceiveOfflineFile(blob);
blob.write(dbei);
db_event_edit(hOldEvent, &dbei, true);
}
diff --git a/protocols/JabberG/src/jabber_file.cpp b/protocols/JabberG/src/jabber_file.cpp index 51461785da..2a49b53d19 100644 --- a/protocols/JabberG/src/jabber_file.cpp +++ b/protocols/JabberG/src/jabber_file.cpp @@ -113,14 +113,15 @@ INT_PTR __cdecl CJabberProto::OnOfflineFile(WPARAM param, LPARAM) return 0;
}
-void CJabberProto::OnReceiveOfflineFile(DB::FILE_BLOB &blob, void *pHandle)
+void CJabberProto::OnReceiveOfflineFile(DB::FILE_BLOB &blob)
{
- if (auto *ft = (filetransfer *)pHandle) {
+ if (auto *ft = (filetransfer *)blob.getUserInfo()) {
if (ft->type == FT_HTTP) {
if (ft->httpPath)
blob.setUrl(ft->httpPath);
blob.setSize(ft->dwExpectedRecvFileSize);
}
+ delete ft;
}
}
diff --git a/protocols/JabberG/src/jabber_proto.h b/protocols/JabberG/src/jabber_proto.h index c87874ec20..17fc45c80e 100644 --- a/protocols/JabberG/src/jabber_proto.h +++ b/protocols/JabberG/src/jabber_proto.h @@ -153,7 +153,7 @@ struct CJabberProto : public PROTO<CJabberProto>, public IJabberInterface MWindow OnCreateAccMgrUI(MWindow) override;
void OnMarkRead(MCONTACT, MEVENT) override;
void OnModulesLoaded() override;
- void OnReceiveOfflineFile(DB::FILE_BLOB &blob, void *ft) override;
+ void OnReceiveOfflineFile(DB::FILE_BLOB &blob) override;
void OnSendOfflineFile(DB::EventInfo &dbei, DB::FILE_BLOB &blob, void *ft) override;
void OnShutdown() override;
diff --git a/protocols/Telegram/src/avatars.cpp b/protocols/Telegram/src/avatars.cpp index ed6efbd3de..dcfa894ced 100644 --- a/protocols/Telegram/src/avatars.cpp +++ b/protocols/Telegram/src/avatars.cpp @@ -149,11 +149,12 @@ INT_PTR __cdecl CTelegramProto::SvcOfflineFile(WPARAM param, LPARAM) /////////////////////////////////////////////////////////////////////////////////////////
// Cloud file pre-creator
-void CTelegramProto::OnReceiveOfflineFile(DB::FILE_BLOB &blob, void *pHandle)
+void CTelegramProto::OnReceiveOfflineFile(DB::FILE_BLOB &blob)
{
- if (auto *ft = (TG_FILE_REQUEST *)pHandle) {
+ if (auto *ft = (TG_FILE_REQUEST *)blob.getUserInfo()) {
blob.setUrl(ft->m_uniqueId.GetBuffer());
blob.setSize(ft->m_fileSize);
+ delete ft;
}
}
diff --git a/protocols/Telegram/src/proto.h b/protocols/Telegram/src/proto.h index b4df98a636..141a2d3034 100644 --- a/protocols/Telegram/src/proto.h +++ b/protocols/Telegram/src/proto.h @@ -384,7 +384,7 @@ public: void OnEventEdited(MCONTACT, MEVENT, const DBEVENTINFO &dbei) override; void OnMarkRead(MCONTACT, MEVENT) override; void OnModulesLoaded() override; - void OnReceiveOfflineFile(DB::FILE_BLOB &blob, void *ft) override; + void OnReceiveOfflineFile(DB::FILE_BLOB &blob) override; void OnSendOfflineFile(DB::EventInfo &dbei, DB::FILE_BLOB &blob, void *hTransfer) override; void OnShutdown() override; diff --git a/protocols/Telegram/src/utils.cpp b/protocols/Telegram/src/utils.cpp index ef19a92d3e..71a17bd3b6 100644 --- a/protocols/Telegram/src/utils.cpp +++ b/protocols/Telegram/src/utils.cpp @@ -403,10 +403,6 @@ bool CTelegramProto::GetMessageFile( pRequest->m_fileSize = pFile->size_;
pRequest->m_bRecv = !pMsg->is_outgoing_;
pRequest->m_hContact = GetRealContact(pUser);
- {
- mir_cslock lck(m_csFiles);
- m_arFiles.insert(pRequest);
- }
char szReplyId[100];
const char *szDesc = nullptr;
@@ -430,7 +426,7 @@ bool CTelegramProto::GetMessageFile( if (dbei) {
DB::FILE_BLOB blob(dbei);
- OnReceiveOfflineFile(blob, pRequest);
+ OnReceiveOfflineFile(blob);
blob.write(dbei);
db_event_edit(hDbEvent, &dbei, true);
delete pRequest;
|