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


Присутствуют сообщения из эхоконференции RU.GOLDED с датами от 16 Jul 13 03:28:02 до 16 Nov 24 03:28:00, всего сообщений: 3632
Ответить на сообщение К списку сообщений Предыдущее сообщение Следующее сообщение
= Сообщение: 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>>> diff --git a/goldlib/gcui/gkbdgetm.cpp
NA>>> b/goldlib/gcui/gkbdgetm.cpp
NA>>> --- a/goldlib/gcui/gkbdgetm.cpp
NA>>> +++ b/goldlib/gcui/gkbdgetm.cpp
NA>>> @@ -310,6 +310,7 @@ gkey getxch(int __tick)
NA>>>                      if(gkbd->inmenu and gmou.FreeCursor())
NA>>>                          return 0;
NA>>>  #endif
NA>>> +                    _onkey = gkbd->onkey;
NA>>>                      break;
NA>>>                  }
NA>>>                  _onkey = _onkey->prev;

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)

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