Как это воспроизвести?
Падение Dlg.GetValue(...) при обработке DN_CLOSE в DE_DLGPROCEND
- John Doe
- Бюрократ
- Posts: 13807
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 73 times
- Been thanked: 426 times
- Contact:
Падение Dlg.GetValue(...) при обработке DN_CLOSE в DE_DLGPROCEND
https://t.me/FarManager — Telegram чат
- buniak_a_h
- Posts: 4236
- Joined: Sat 20 Apr, 2013 00:17
- Location: Санкт-Петробад
- Has thanked: 222 times
- Been thanked: 643 times
- Contact:
Переопределение символа-разделителя при создании папок
Вылет найден г. Prutkov-ым.
Если одновременно установлены мои скрипты BAX_QSearch и предыдущая версия MakeFolders, нажать LAlt (появится окно поиска) и там нажать F1, то падает в секции condition скрипта MakeFolders. Сам ни за что бы не нашёл.
- John Doe
- Бюрократ
- Posts: 13807
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 73 times
- Been thanked: 426 times
- Contact:
Переопределение символа-разделителя при создании папок
Падает именно при обращении к элементам диалога
То же самое но в
Dlg.GetValue(Param.Param1,9)
при обработке DN_CLOSE
в DE_DLGPROCEND
.То же самое но в
DE_DLGPROCINIT
к падению не приводит.https://t.me/FarManager — Telegram чат
- John Doe
- Бюрократ
- Posts: 13807
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 73 times
- Been thanked: 426 times
- Contact:
Падение Dlg.GetValue(...) при обработке DE_DLGPROCEND
BAX_QSearch необязателен, у меня падает и с другим немодальным диалогом
https://t.me/FarManager — Telegram чат
- John Doe
- Бюрократ
- Posts: 13807
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 73 times
- Been thanked: 426 times
- Contact:
Падение Dlg.GetValue(...) при обработке DE_DLGPROCEND
Минимальный код для воспроизведения падения:
Важно чтобы у диалога был обработчик, хоть бы и пустая функция.
Code: Select all
local id = win.Uuid"68C7D210-B17B-40B6-A8A0-6097378BD4FF"
local F = far.Flags
local function nonmodal(text,title)
local len = text:len()
local items = {
--[[01]] {F.DI_SINGLEBOX,0,0,len+2,3,0,0,0,0,title},
--[[02]] {F.DI_TEXT, 1,1,len,0,0,0,0,0,text},
}
local flags = F.FDLG_NONMODAL
return far.DialogInit(id,-1,-1,len+2,3,len,items,flags,function()end)
end
Event {
group = "DialogEvent";
action = function(Event, Param)
if Event == F.DE_DLGPROCEND and Param.Msg == F.DN_CLOSE then
Dlg.GetValue(1,1)
end
end;
}
Macro {
area="Common"; key="F1";
action=function()
nonmodal(("Hello"):rep(10),"Title")
end;
}
https://t.me/FarManager — Telegram чат
-
- Posts: 6820
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 41 times
- Been thanked: 528 times
-
- Posts: 6820
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 41 times
- Been thanked: 528 times
Падение Dlg.GetValue(...) при обработке DN_CLOSE в DE_DLGPROCEND
А в Far3:
Code: Select all
╔═ Bisect Far builds ══╗
║ Far 3.0.5311 is good ║
║ Far 3.0.5318 is bad ║
╟──────────────────────╢
-
- Posts: 6820
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 41 times
- Been thanked: 528 times
Падение Dlg.GetValue(...) при обработке DN_CLOSE в DE_DLGPROCEND
Code: Select all
static __inline BOOL NonModal(TDialogData *dd)
{
return dd && !dd->isModal;
}
- zg
- zero-gravity
- Posts: 6016
- Joined: Tue 15 Mar, 2005 17:36
- Location: riga
- Been thanked: 185 times
- Contact:
Падение Dlg.GetValue(...) при обработке DN_CLOSE в DE_DLGPROCEND
может, там дальше по коду обращение к dd без проверки, поэтому и эту компилятор убирает.
Падение Dlg.GetValue(...) при обработке DN_CLOSE в DE_DLGPROCEND
Круто, если компилятор такой умный, мог бы и предупреждение выдать.