Sim-IM

Apr. 26th, 2008 01:57 pm
nataraj: (Default)
[personal profile] nataraj
Разобрался с патчем http://developer.berlios.de/patch/?func=detailpatch&patch_id=2377&group_id=4482 который без должного анализа подтвердил Нораген...

Собственно патч возвращал работу с паролями ICQ назад к std::string...
То что оно начало работать, это конечно хорошо... но линия партии заключалось в переводе всего на QString и ему подобные...

Так вот... дело было вот в чем:
Перед отправкой пароль ксорится определенной последовательнстью байт.
При этом может так статься, что один из символов после поксора станет нулем...

Для случая std::string -- все работало нормально...
std::string s= "";
s+='c';
s+=(char)0;
s+='d';
s.length(); будет равен трем, а s.c_str вернет всю последовательность байт

Но для QСString все не работает...

QCString qs= "";
qs+='c';
qs+=(char)0;
qs+='d';

Оно просто пропустит нулевой байт, и в строке будет всего два байта... И как результат нас не пустят в сеть...

Щас уеду, и завтра наверное буду понимать, какой QByteArray вместо QCString тут будет кашерно использовать...

Date: 2008-04-26 07:58 pm (UTC)
ext_605364: geg MOPO4 (Default)
From: [identity profile] gegmopo4.livejournal.com
Вообще-то, если уж использовать std::string, то правильнее использовать data(), а не c_str(). Но ни std::string, ни тем более QCString тут использовать совсем не кошерно (особенно с учётом того, что длина заранее известна и ограничена 8).

Profile

nataraj: (Default)
Swami Dhyan Nataraj

July 2024

S M T W T F S
 123456
789 10111213
14151617181920
21222324252627
28293031   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 22nd, 2026 10:00 am
Powered by Dreamwidth Studios