diff options
author | George Hazan <george.hazan@gmail.com> | 2023-12-29 15:54:41 +0300 |
---|---|---|
committer | George Hazan <george.hazan@gmail.com> | 2023-12-29 15:54:41 +0300 |
commit | acc57c49daf7de42176c99d9022d9d4f6265ce7e (patch) | |
tree | 0bbce489a9c9b74d0b6d3fde197b760e8477752e /src/mir_app | |
parent | d5adc22f1df9efa7ccaf5cff583808dc94cf98ab (diff) |
fixes #4089 (Discord: каналы двоятся при каждом логине)
Diffstat (limited to 'src/mir_app')
-rw-r--r-- | src/mir_app/src/contacts.cpp | 32 |
1 files changed, 16 insertions, 16 deletions
diff --git a/src/mir_app/src/contacts.cpp b/src/mir_app/src/contacts.cpp index a486cc988c..1cfc0ee50f 100644 --- a/src/mir_app/src/contacts.cpp +++ b/src/mir_app/src/contacts.cpp @@ -41,35 +41,35 @@ uint8_t nameOrder[_countof(nameOrderDescr)]; static wchar_t* ProcessDatabaseValueDefault(MCONTACT hContact, const char *szProto, const char *szSetting)
{
- DBVARIANT dbv;
- if (!db_get_ws(hContact, szProto, szSetting, &dbv)) {
- switch (dbv.type) {
- case DBVT_ASCIIZ:
- if (!dbv.pszVal[0]) break;
- case DBVT_WCHAR:
- if (!dbv.pwszVal[0]) break;
- return dbv.pwszVal;
- }
- db_free(&dbv);
- }
+ wchar_t *ret = db_get_wsa(hContact, szProto, szSetting);
+ if (ret)
+ return ret;
+ DBVARIANT dbv;
if (db_get(hContact, szProto, szSetting, &dbv))
return nullptr;
wchar_t buf[40];
switch (dbv.type) {
case DBVT_BYTE:
- return mir_wstrdup(_itow(dbv.bVal, buf, 10));
+ ret = _itow(dbv.bVal, buf, 10);
+ break;
case DBVT_WORD:
- return mir_wstrdup(_itow(dbv.wVal, buf, 10));
+ ret = _itow(dbv.wVal, buf, 10);
+ break;
case DBVT_DWORD:
- return mir_wstrdup(_itow(dbv.dVal, buf, 10));
+ ret = _itow(dbv.dVal, buf, 10);
+ break;
case DBVT_BLOB:
- return mir_wstrdup(bin2hexW(dbv.pbVal, min(int(dbv.cpbVal), 19), buf));
+ if (dbv.cpbVal == 8)
+ ret = _i64tow(*(__int64*)dbv.pbVal, buf, 10);
+ else
+ ret = bin2hexW(dbv.pbVal, min(int(dbv.cpbVal), 19), buf);
+ break;
}
db_free(&dbv);
- return nullptr;
+ return mir_wstrdup(ret);
}
MIR_APP_DLL(wchar_t*) Contact::GetInfo(int type, MCONTACT hContact, const char *szProto)
|