IRCaBot 2.1.0
GPLv3 © acetone, 2021-2022
#dev
/2024/08/26
~R4SAS
~orignal
~villain
@onon
&N00B
+Xeha
+r00tobo
+relaybot
+whothefuckami
AreEnn
HackerMan
KabaOS
Leastr
Most2
Nausicaa
Vort
WayBest
`
acetone
anon2
b3t4f4c3
karamba_i2p
nemiga
not_bob
osoznayka
poriori
profetikla
segfault
soos
teeth
tolik
un
unwr
weko
onon Мне нужно при каждом получении ACKа очищать список NACKов и потом добавлять их заново.
onon Как это сделать правильно? Так:
onon m_NACKedPackets.clear ();
onon Или нужно ещё
onon for (auto it: m_NACKedPackets)
onon m_LocalDestination.DeletePacket (it);
orignal счас гляну
onon Это я взял из void Stream::CleanUp ()
orignal у меня нет такой структуры
orignal как у тебя объясвлена m_NACKedPackets?
onon Я делаю по образцу m_SentPackets
orignal счас
onon Там тот же смысл
orignal надо итрератор потому что там голый указатель
onon Ну так же как и в m_SentPackets
onon Меня просто смущает m_LocalDestination.DeletePacket (it);
onon Почему на m_LocalDestination
orignal потому что в ней сидит пул пакетов
orignal очевидно же
onon Так я лишнего ничего не удалю?
onon Он общий этот пул?
orignal не знаю
orignal у тебя пакет только в одном списке или нет?
orignal DeletePacket можно вызывать только 1 раз
orignal для пакета
onon А мне нужно только из m_NACKedPackets удалить а не вообще
onon m_NACKedPackets.clear ();
onon Сработает?
orignal да конечно
orignal главное чтобы пакет не сидел только в нем
orignal иначе будет утечка памяти
onon хмм
onon Надо подумать, может ли такая ситуация возникнуть
orignal так что тут надо осторожно
orignal если совсем надо такое то лучге все переделать на shared_ptr
onon Ладно, буду думать, пока всё
onon m_NACKedPackets.erase (it); получается удалит только один пакет (точнее ссылку на него)
onon В m_SentPackets там почему-то m_SentPackets.erase (it++);
onon Там что, нумерация различается?
orignal m_SentPackets.erase (it++);
orignal это еще что за хуета?
orignal в какой строчке?
onon void Stream::ProcessAck (Packet * packet)
orignal m_NACKedPackets.erase (it) так нельзя
orignal надо
onon 499
orignal it = m_NACKedPackets.erase (it)
orignal я хочу знать кто ЭТО написал
onon Это не я
orignal я вижу что я
orignal вопрос почему
orignal а понятно потому что set
orignal с ним там можно
orignal да из set надо именно так как написано
onon for (auto it = m_SentPackets.begin (); it != m_SentPackets.end ();)
onon m_SentPackets.erase (it++);
onon А если
onon for (auto it : m_SentPackets)
onon То it = m_NACKedPackets.erase (it)
onon Так?
orignal нет
orignal так нельзя
orignal у тебя итераторы из разных структур
onon Ладно, не буду делать erase
orignal что ты хочешь сделать объясни
onon Буду только clear ()
orignal так и надо
onon for (auto it = m_SentPackets.begin (); it != m_SentPackets.end ();)
onon m_NACKedPackets.insert (it)
orignal если тебе надо удалить все из сткруторы
onon Или m_NACKedPackets.insert (it++)
orignal так тоже нельзя
orignal ты не имеешь право использовтаь итератор из другой структоры
onon Как всё сложно
orignal у тебя интретор от m_SentPacekts
orignal а вставляешь в m_NACKePackets
onon Как правильно вставить
onon Или лучше другую структуру какую использовать?
onon Просто список значений
orignal m_NACKedPackets.insert (*it)
orignal думаю так
onon Я попробую
orignal короче Packet * p = *it; m_NACKedPackets.insert (p)
orignal интретор надо for (auto it: m_SentPackets)
orignal тогда просто m_NACKedPackets.insert (it)
orignal вот так надо
onon Не, тут уже есть итератор, и он уже все наки проверяет
onon Остаётся только их собрать вместе
orignal я не могу сказать пока не вижу код
orignal а тем временем я выпилил boost::date_time из профилей
onon В любом случае я потом всё тебе скину, там и проверишь
orignal мне надо видеть весь код
orignal R4SAS надо будет в ведре выпилить зависимость от boost::date_time
orignal следующий кандидат boost::filesystem
segfault > да из set надо именно так как написано
segfault разве итератор не инвалид становится?
segfault orignal:
orignal в таком коде нет
orignal можно из итератора удалять из этой же струкутры только осторожно