Добро пожаловать, Гость. Пожалуйста авторизуйтесь здесь.
FGHIGate на GaNJa NeTWoRK ST@Ti0N - Просмотр сообщения в эхоконференции RU.HUSKY
Введите FGHI ссылку:


Присутствуют сообщения из эхоконференции RU.HUSKY с датами от 16 Jul 13 10:00:06 до 31 Mar 24 23:49:12, всего сообщений: 5321
Ответить на сообщение К списку сообщений Предыдущее сообщение Следующее сообщение
= Сообщение: 4419 из 5321 ========================================= RU.HUSKY =
От   : Michael Dukelsky                 2:5020/1042        03 May 21 16:20:12
Кому : Nil Alexandrov                                      03 May 21 16:20:12
Тема : Утечка памяти в readMsgFromPkt()
FGHI : area://RU.HUSKY?msgid=2:5020/1042+608ffa46
На   : area://RU.HUSKY?msgid=2:5015/46+608b9aab
= Кодировка сообщения определена как: CP866 ==================================
==============================================================================
Привет, Nil!

30 April 2021 08:37, Nil Alexandrov послал(а) письмо к All:

NA> Алокация памяти под сообщение происходит тут
NA> husky/hpt/src/pktread.c: readMsgFromPkt()
NA> 732 msg = (s_message *)safe_malloc(sizeof(s_message));

NA> Вызывающая функция будет освобождать память если вернулся код 1, иначе
NA> ошибка и не ожидается, что надо что-то освобождать,
NA> например, hpt/src/toss.c: processPkt() 1920 while((msgrc =
NA> readMsgFromPkt(pkt, header, &msg)) == 1) внутри этого цикла память
NA> освобождается, за пределами - нет.

За пределами цикла память освобождать не надо. Если заглянуть внутрь readMsgFromPkt(), можно увидеть два оператора return до выделения памяти (на них наплевать) и два - после. Из этих последних двух один возвращает ту самую единицу и один - двойку. По поводу единицы всё понятно, а перед возвращением двойки есть freeMsgBuffers(msg), но забыли nfree(msg). Добавил.

Желаю успехов, Nil!
За сим откланиваюсь, Michael.

... node (at) f1042 (dot) ru
--- GoldED+/LNX 1.1.5-b20180707
* Origin: ==<<.f1042.ru.>>== (2:5020/1042)

К главной странице гейта
Powered by NoSFeRaTU`s FGHIGate
Открытие страницы: 0.049108 секунды