From f3adc14797ee6889a0134b8f8ebff39436af3a95 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Wed, 5 Mar 2025 14:12:51 +0300 Subject: speed optimization - double call of db_get removed --- src/mir_app/src/contacts.cpp | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/mir_app/src/contacts.cpp b/src/mir_app/src/contacts.cpp index ecfec7475a..250cd71304 100644 --- a/src/mir_app/src/contacts.cpp +++ b/src/mir_app/src/contacts.cpp @@ -41,14 +41,11 @@ uint8_t nameOrder[_countof(nameOrderDescr)]; static wchar_t* ProcessDatabaseValueDefault(MCONTACT hContact, const char *szProto, const char *szSetting) { - 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 *ret; wchar_t buf[40]; switch (dbv.type) { case DBVT_BYTE: @@ -66,6 +63,16 @@ static wchar_t* ProcessDatabaseValueDefault(MCONTACT hContact, const char *szPro else ret = bin2hexW(dbv.pbVal, min(int(dbv.cpbVal), 19), buf); break; + case DBVT_ASCIIZ: + ret = mir_a2u(dbv.pszVal); + break; + case DBVT_UTF8: + ret = mir_utf8decodeW(dbv.pszVal); + break; + case DBVT_WCHAR: + return dbv.pwszVal; // no need to free dbv + default: + ret = nullptr; } db_free(&dbv); @@ -154,7 +161,7 @@ MIR_APP_DLL(wchar_t*) Contact::GetInfo(int type, MCONTACT hContact, const char * db_free(&dbv2); return buf; } - db_free(&dbv); + return dbv.pwszVal; } break; -- cgit v1.2.3