Shmuel, оно падает в
static void PushList (lua_State *L, const struct FarList *list)
и связано с 5845.6.
Немного истории:
zg 11.02.2012 15:12:15 +0200 - build 2449
4. DN_EDITCHANGE/DN_DRAWDLGITEM accepts the copy of dialog item information in Param2.
· · · · · · · · · · · · · · · · · · · · · · · · ·
4. DN_EDITCHANGE/DN_DRAWDLGITEM в Param2 передаётся копия на данные об элементе диалога.
zg 06.02.2014 23:38:11 +0200 - build 3798
1. DM_GETDLGITEM returns the current list for DI_LISTBOX and DI_COMBOBOX items, instead of the list which
they were initialized by at their creation.
· · · · · · · · · · · · · · · · · · · · · · · · ·
1. DM_GETDLGITEM для элементов DI_LISTBOX и DI_COMBOBOX возвращает текущий список, а не список,
которым они инициализировались при создании.
Изменения логичные и правильные по отдельности.
К сожалению, было упущено из виду, что внутри Far и DM_GETDLGITEM, и DN_DRAWDLGITEM работают через одну и ту же функцию.
В результате этого при каждом DN_DRAWDLGITEM делалась полная копия листбокса, показывалась плагину и удалялась. А списки иногда бывают большие. И поэтому, например, поиск по всему диску так чудовищно тормозил.
В 5845 это поведение было откорректировано: DM_GETDLGITEM как и раньше, возвращает копию списка, но в DN_DRAWDLGITEM приходит то, чем список инициализировали изначально. Если по этим адресам данных уже нет, но вы с ними пытаетесь что-то делать - будет падать, да.
Кстати, в большинстве случаев у меня при CtrlShiftR получается это:
╔═════════════════════════════════════════════ LuaMacro ══════════════════════════════════════════════╗
║ (error object is not a string) ║
║ stack traceback: ║
║ [C]: in function 'AdvControl' ║
║ ...\far\Debug.64.vc\Profile\Macros\scripts\reloadmacros.lua:9: in function <...\far\Debug.64.vc\ ║
║ Profile\Macros\scripts\reloadmacros.lua:4> ║
╟─────────────────────────────────────────────────────────────────────────────────────────────────────╢
║ { OK } ║
╚═════════════════════════════════════════════════════════════════════════════════════════════════════╝
После закрытия на экране остается невидимый диалог, после закрытия которого падает уже в другом месте.
Возможно, связано.