View Issue Details

IDProjectCategoryView StatusLast Update
0002614WishesPlugins API.Dialogpublic2014-04-04 08:48
ReporterJohnDoe Assigned To 
PrioritynormalSeverityminorReproducibilityN/A
Status newResolutionopen 
Product Version3.0 
Summary0002614: SendDlgMessage: не падать при невалидном hDlg
Descriptionhttp://forum.farmanager.com/viewtopic.php?p=117232#p117232
TagsNo tags attached.
Build

Activities

shmuel

2014-03-06 10:19

developer   bugnote:0011867

Last edited: 2014-03-06 10:20

Хоть это и возможно сделать в Фаре (и в форуме упомянут вариант реализации), навряд ли это будет сделано. Причина в том, что, в отличие от Lua-скриптов, где данная незащищённость является чуть ли не единственной, у "нативных" плагинов есть тысячи способов завалить Фар, и на каждый из них защиту не поставишь.

zg

2014-03-07 00:15

developer   bugnote:0011871

3821.

JohnDoe

2014-03-08 11:17

updater   bugnote:0011873

Теперь не падает.
Но что должна возвращать функция far.SendDlgMessage, вызванная с невалидным хэндлом?
Сейчас возвращает 1.

local F = far.Flags
local hDlg
Macro { description="";
  area="Menu Dialog"; key="F1";
  action=function()
    hDlg = far.AdvControl(F.ACTL_GETWINDOWINFO).Id
    far.Show(hDlg)
  end;
}
Macro { description="";
  area="Menu Dialog"; key="F2";
  action=function()
    local id = far.SendDlgMessage (hDlg, F.DM_GETFOCUS)
    far.Show(id)
  end;
}

shmuel

2014-03-08 11:32

developer   bugnote:0011874

Фар возвращает 0, LuaFAR инкрементирует, так как отсчёт элементов диалога в LuaFAR производится от единицы.

Возможно было бы Фару в этом случае возвращать отрицательное число (расширение API).

zg

2014-03-08 16:54

developer   bugnote:0011876

3823.

JohnDoe

2014-03-09 10:44

updater   bugnote:0011877

>для DM_GETFOCUS и DM_LISTADDSTR в случае отсутствия диалога возвращается -1.
Не знаю почему только для этих сообщений, но вам виднее...

shmuel

2014-03-09 11:06

developer   bugnote:0011878

Потому что для почти всех прочих сообщений возврат 0 означает неудачу, а для указанных сообщений 0 - это значимый результат.

JohnDoe

2014-03-09 11:08

updater   bugnote:0011879

Вот именно что "почти"
Беру первое попавшееся DM_EDITUNCHANGEDFLAG
Return
Предыдущее состояние "неизмененный текст" строки редактирования.

zg

2014-03-09 11:34

developer   bugnote:0011880

привели бы сразу весь список, где по вашему мнению нужно возвращать что-то отличное от 0.

JohnDoe

2014-03-09 11:35

updater   bugnote:0011881

Ok, будет список.

vskirdin

2014-03-13 07:27

administrator   bugnote:0011903

Писание не забудьте изменить соответствующим образом по результатам решения этого бага

zg

2014-03-13 08:27

developer   bugnote:0011909

энциклопедия была сразу изменена: https://code.google.com/p/farmanager/source/detail?r=11508

vskirdin

2014-04-04 06:14

administrator   bugnote:0012099

Закрываем?

JohnDoe

2014-04-04 08:37

updater   bugnote:0012102

Нет, я должен список, но пока не могу этим заняться

Issue History

Date Modified Username Field Change
2014-03-06 10:12 JohnDoe New Issue
2014-03-06 10:19 shmuel Note Added: 0011867
2014-03-06 10:20 shmuel Note Edited: 0011867
2014-03-07 00:15 zg Note Added: 0011871
2014-03-08 11:17 JohnDoe Note Added: 0011873
2014-03-08 11:32 shmuel Note Added: 0011874
2014-03-08 16:54 zg Note Added: 0011876
2014-03-09 10:44 JohnDoe Note Added: 0011877
2014-03-09 10:44 JohnDoe Status new => resolved
2014-03-09 11:06 shmuel Note Added: 0011878
2014-03-09 11:08 JohnDoe Note Added: 0011879
2014-03-09 11:34 zg Note Added: 0011880
2014-03-09 11:35 JohnDoe Note Added: 0011881
2014-03-13 07:27 vskirdin Note Added: 0011903
2014-03-13 08:27 zg Note Added: 0011909
2014-04-04 06:14 vskirdin Note Added: 0012099
2014-04-04 08:37 JohnDoe Note Added: 0012102
2014-04-04 08:48 vskirdin Status resolved => new