= Сообщение: 3089 из 3632 ======================================== RU.GOLDED = От : Nil A 2:5015/46 28 Oct 23 08:59:34 Кому : Vitaliy Aksyonov 28 Oct 23 08:59:34 Тема : Заезды по памяти по F1 FGHI : area://RU.GOLDED?msgid=2:5015/46+653ca44d На : area://RU.GOLDED?msgid=2:5015/46+653c9e9b = Кодировка сообщения определена как: CP866 ================================== ============================================================================== Hello, Vitaliy!
Saturday October 28 2023 08:27, from Nil A -> Vitaliy Aksyonov:
NA>>> Глобальные переменные - это зло. огда мы отрабатываем клавишу NA>>> ESC, то esc_esc() вычистит себя, и doubly-linked list останется NA>>> пустым, т.е. gkbd->onkey уже освобождённым оказывается.
VA>> Можешь вкратце описать, в чём проблема и как твой фикс её решает? VA>> Патч подготовлю.
NA> gkbd - глобальный объект для работы с вводом. Синглтон напрашивается, NA> но тут просто глобал. gkbd->onkey - doubly linked list какие мы готовы NA> обрабатывать клавиши с их колбеками. Там цикл по этому листу, если NA> совпало, то вызываем колбек. Проблема случается в F1 помощи, если NA> нажимать pageup, pagedown, esc клавиши. Запуститься их обработчик, NA> например, esc_esc(), который первым делом вызовет NA> setonkey(Key_Esc,NULL,0) и уберёт себя из этого linked list. Далее там NA> в getxch() стоит break после обработки, а потом if, чтобы key to pass NA> back, 0=don't pass.
Я немного соврал. Падает на ESC, потому что он себя из списка вынимает, и эта такущая _onkey становится уже освобождённой. Мой фикс на начало линкед-листа переходит. Может быть это и не правильно.
Best Regards, Nil --- GoldED+/LNX 1.1.5 * Origin: Linux 2.6.32-042stab145.3 (2:5015/46)