Падение Dlg.GetValue(...) при обработке DN_CLOSE в DE_DLGPROCEND

Здесь можно сообщить о найденных багах в Far.
Post Reply
User avatar
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

Post by John Doe »

buniak_a_h wrote: Wed 24 May, 2023 20:07 ...в некоторых случаях вызывает падение ФАР
Как это воспроизвести?
https://t.me/FarManager — Telegram чат
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Переопределение символа-разделителя при создании папок

Post by buniak_a_h »

John Doe wrote: Wed 24 May, 2023 20:18 Как это воспроизвести?
Вылет найден г. Prutkov-ым.
Если одновременно установлены мои скрипты BAX_QSearch и предыдущая версия MakeFolders, нажать LAlt (появится окно поиска) и там нажать F1, то падает в секции condition скрипта MakeFolders. Сам ни за что бы не нашёл.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Переопределение символа-разделителя при создании папок

Post by John Doe »

Падает именно при обращении к элементам диалога Dlg.GetValue(Param.Param1,9) при обработке DN_CLOSE в DE_DLGPROCEND.
То же самое но в DE_DLGPROCINIT к падению не приводит.
https://t.me/FarManager — Telegram чат
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Падение Dlg.GetValue(...) при обработке DE_DLGPROCEND

Post by John Doe »

BAX_QSearch необязателен, у меня падает и с другим немодальным диалогом
https://t.me/FarManager — Telegram чат
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Падение Dlg.GetValue(...) при обработке DE_DLGPROCEND

Post by John Doe »

Минимальный код для воспроизведения падения:

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 чат
Shmuel
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

Post by Shmuel »

John Doe wrote: Wed 24 May, 2023 21:45 Минимальный код для воспроизведения падения:
Интересно, что в far2m не падает.
Shmuel
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

Post by Shmuel »

А в Far3:

Code: Select all

╔═ Bisect Far builds ══╗
║ Far 3.0.5311 is good ║
║ Far 3.0.5318 is bad  ║
╟──────────────────────╢
User avatar
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

Post by zg »

падает тут. dd — nullptr.
Shmuel
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

Post by Shmuel »

Code: Select all

static __inline BOOL NonModal(TDialogData *dd)
{
	return dd && !dd->isModal;
}
Если dd==nullptr, То здесь падать не может.
User avatar
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

Post by zg »

Shmuel wrote: Wed 24 May, 2023 22:18 здесь падать не может
может, там дальше по коду обращение к dd без проверки, поэтому и эту компилятор убирает.
2useven10
Posts: 5210
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 310 times

Падение Dlg.GetValue(...) при обработке DN_CLOSE в DE_DLGPROCEND

Post by 2useven10 »

zg wrote: Wed 24 May, 2023 22:22 может, там дальше по коду обращение к dd без проверки, поэтому и эту компилятор убирает.
Круто, если компилятор такой умный, мог бы и предупреждение выдать.
User avatar
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

Post by zg »

778.
Post Reply

Return to “Глюки и баги”