From 47d0d742d0ba7cac754a7b1765328fb33a14ffc0 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Thu, 12 Feb 2015 17:19:11 +0000 Subject: complex fix against NULL in nicks git-svn-id: http://svn.miranda-ng.org/main/trunk@12097 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- plugins/TabSRMM/src/chat/manager.cpp | 3 +++ protocols/WhatsApp/src/chat.cpp | 13 +++++++++---- src/modules/chat/manager.cpp | 2 +- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/plugins/TabSRMM/src/chat/manager.cpp b/plugins/TabSRMM/src/chat/manager.cpp index 01308537b1..0c8302e101 100644 --- a/plugins/TabSRMM/src/chat/manager.cpp +++ b/plugins/TabSRMM/src/chat/manager.cpp @@ -28,6 +28,9 @@ static int sttCompareNicknames(const TCHAR *s1, const TCHAR *s2) { + if (s2 == NULL) + return 1; + // skip rubbish while (*s1 && !_istalpha(*s1)) ++s1; while (*s2 && !_istalpha(*s2)) ++s2; diff --git a/protocols/WhatsApp/src/chat.cpp b/protocols/WhatsApp/src/chat.cpp index d6c650ec9d..a5be1e9bac 100644 --- a/protocols/WhatsApp/src/chat.cpp +++ b/protocols/WhatsApp/src/chat.cpp @@ -327,11 +327,16 @@ WAChatInfo* WhatsAppProto::InitChat(const std::string &jid, const std::string &n TCHAR* WhatsAppProto::GetChatUserNick(const std::string &jid) { - if (m_szJid == jid) - return str2t(m_szNick); + TCHAR* tszNick; + if (m_szJid != jid) { + MCONTACT hContact = ContactIDToHContact(jid); + tszNick = (hContact == 0) ? utils::removeA(str2t(jid)) : mir_tstrdup(pcli->pfnGetContactDisplayName(hContact, 0)); + } + else tszNick = str2t(m_szNick); - MCONTACT hContact = ContactIDToHContact(jid); - return (hContact == 0) ? utils::removeA(str2t(jid)) : mir_tstrdup(pcli->pfnGetContactDisplayName(hContact, 0)); + if (tszNick == NULL) + tszNick = mir_tstrdup(TranslateT("Unknown user")); + return tszNick; } WAChatInfo* WhatsAppProto::SafeGetChat(const std::string &jid) diff --git a/src/modules/chat/manager.cpp b/src/modules/chat/manager.cpp index c3706062de..7f59dd5f36 100644 --- a/src/modules/chat/manager.cpp +++ b/src/modules/chat/manager.cpp @@ -947,7 +947,7 @@ static USERINFO* UM_SortUser(USERINFO **ppUserList, const TCHAR *pszUID) USERINFO* UM_AddUser(STATUSINFO *pStatusList, USERINFO **ppUserList, const TCHAR *pszUID, const TCHAR *pszNick, WORD wStatus) { - if (!pStatusList || !ppUserList) + if (pStatusList == NULL || ppUserList == NULL || pszNick == NULL) return NULL; USERINFO *ui = *ppUserList, *pLast = NULL; -- cgit v1.2.3