diff options
author | George Hazan <george.hazan@gmail.com> | 2015-02-12 17:19:11 +0000 |
---|---|---|
committer | George Hazan <george.hazan@gmail.com> | 2015-02-12 17:19:11 +0000 |
commit | 47d0d742d0ba7cac754a7b1765328fb33a14ffc0 (patch) | |
tree | f62b24ef94f19a06fce5e7260f858477e293a828 | |
parent | 07f9c668a8292fa0869faf80881956592bf5096f (diff) |
complex fix against NULL in nicks
git-svn-id: http://svn.miranda-ng.org/main/trunk@12097 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
-rw-r--r-- | plugins/TabSRMM/src/chat/manager.cpp | 3 | ||||
-rw-r--r-- | protocols/WhatsApp/src/chat.cpp | 13 | ||||
-rw-r--r-- | 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;
|