Падение при вызове макроса после возвращения к закладке
- Dennis_Moore
- Posts: 295
- Joined: Tue 03 Mar, 2015 19:54
- Location: Kiev
- Has thanked: 6 times
- Been thanked: 17 times
Падение при вызове макроса после возвращения к закладке
Случайно обнаружил баг в LuaMacro. Что нужно сделать:
1. Устанавливаем макрос "[MoonScript] Подсветка кириллицы и пробельных символов" (viewtopic.php?t=8674&start=16)
2. Открываем любой файл, RCtrl+1 (делаем закладку), опускаемся на несколько строк, LCtrl+1 (возвращаемся к закладке).
3. Жмем F3 (клавиша по умолчанию для макроса выше). Падение.
Воспроизвести удалось на билдах 4932 и 4944 и только в x64 версиях.
Текст ошибки:
1. Устанавливаем макрос "[MoonScript] Подсветка кириллицы и пробельных символов" (viewtopic.php?t=8674&start=16)
2. Открываем любой файл, RCtrl+1 (делаем закладку), опускаемся на несколько строк, LCtrl+1 (возвращаемся к закладке).
3. Жмем F3 (клавиша по умолчанию для макроса выше). Падение.
Воспроизвести удалось на билдах 4932 и 4944 и только в x64 версиях.
Текст ошибки:
- Dennis_Moore
- Posts: 295
- Joined: Tue 03 Mar, 2015 19:54
- Location: Kiev
- Has thanked: 6 times
- Been thanked: 17 times
Падение при вызове макроса после возвращения к закладке
Забыл вчера написать что чуть перемудрил с инструкцией - падение происходит и без второго пункта.
Upd. Просьба модераторам для порядка переименовать тему в "Падение при вызове макроса <[MoonScript] Подсветка кириллицы и пробельных символов>"
Upd. Просьба модераторам для порядка переименовать тему в "Падение при вызове макроса <[MoonScript] Подсветка кириллицы и пробельных символов>"
Last edited by Dennis_Moore on Mon 01 May, 2017 12:26, edited 2 times in total.
- zg
- zero-gravity
- Posts: 6016
- Joined: Tue 15 Mar, 2005 17:36
- Location: riga
- Been thanked: 185 times
- Contact:
Падение при вызове макроса после возвращения к закладке
я не очень понял, зачем из-за ошибки в макросе создавать отдельную тему, да ещё и в ошибках фара?
исправление:
исправление:
Code: Select all
fLength=tonumber(egs.StringLength)
- HaRT
- Moderator
- Posts: 10823
- Joined: Tue 30 Aug, 2005 17:21
- Has thanked: 221 times
- Been thanked: 358 times
Падение при вызове макроса после возвращения к закладке
Так ведь, судя по сообщению об ошибке, падает сам Фар — из-за переполнения стека. Даже если в макросе ошибка, Фару-то падать негоже.
Фар есть инструмент, а не нянька. © 2009 DrKnS
- Dennis_Moore
- Posts: 295
- Joined: Tue 03 Mar, 2015 19:54
- Location: Kiev
- Has thanked: 6 times
- Been thanked: 17 times
Падение при вызове макроса после возвращения к закладке
Если бы не падал LuaMacro вместе с FAR'ом то я бы написал в теме макроса. Создать тему здесь мне показалось правильным, ведь данная ошибка может повлиять и на другие макросы.zg wrote:я не очень понял, зачем из-за ошибки в макросе создавать отдельную тему, да ещё и в ошибках фара?
исправление:Code: Select all
fLength=tonumber(egs.StringLength)
P.S. Спасибо за исправление (x86 версия почему-то и так не падала). Наверное модераторам стоит исправить макрос в его теме.
- HaRT
- Moderator
- Posts: 10823
- Joined: Tue 30 Aug, 2005 17:21
- Has thanked: 221 times
- Been thanked: 358 times
Падение при вызове макроса после возвращения к закладке
Правильно ли я понимаю, что Вы имеете в виду это?:zg wrote: и что?
Тут, как я понимаю, из-за ошибки в скрипте плагин LuaMacro показывает диаложку, что снова вызывает EE_REDRAW и приводит к переполнению стека. По хорошему, в такой ситуации дальнейшие события не должны бы передаваться сбойному скрипту. Тогда и Фар бы не упал.При обработке EE_REDRAW и EE_GOTFOCUS НЕЖЕЛАТЕЛЬНО ИСПОЛЬЗОВАТЬ Info.Message, Info.Menu, Info.DialogRun, Info.ShowHelp. Вызов этих функций приводит к рекурсивному вызову EE_REDRAW и EE_GOTFOCUS соответственно.
Last edited by HaRT on Thu 01 Jan, 1970 01:00, edited 0 times in total.
Reason: Исправлена опечатка в слове «передаваться»
Reason: Исправлена опечатка в слове «передаваться»
Фар есть инструмент, а не нянька. © 2009 DrKnS
- zg
- zero-gravity
- Posts: 6016
- Joined: Tue 15 Mar, 2005 17:36
- Location: riga
- Been thanked: 185 times
- Contact:
Падение при вызове макроса после возвращения к закладке
всё согласно документации:
First, you should know that a long is a 64 bit type e.g. on POSIX/x64 systems, but a 32 bit type on Windows/x64 and on 32 bit systems. Thus a long result can be either a plain Lua number or a boxed 64 bit integer cdata object, depending on the target system.
насколько я понимаю, после показа диалога, ошибочное событие не вызывается, возможно стоит это сделать до вызова диалога с ошибкой.