View Issue Details

IDProjectCategoryView StatusLast Update
0003663PluginsLuaMacro / Macro Browserpublic2018-12-17 20:03
ReporterJohnDoeAssigned Toshmuel 
PrioritynormalSeverityminorReproducibilityhave not tried
Status closedResolutionfixed 
Platformx86OSWindowsOS VersionXP SP3
Product Version3.0 
Target VersionFixed in Version 
Summary0003663: LuaFAR: возможность опустить параметры-флаги может быть нежелательна
DescriptionНесколько методов объекта Settings Control принимают параметр Root, тип которого в мануале указан как integer.
Однако если передать nil, то это не приведёт к ошибке.

Shmuel wrote

В реализации тип этого параметра не "integer", а "flag", а для "флагов" значение nil всегда является допустимым и трансформируется в 0.


На мой взгляд, пользы от возможности опустить этот параметр (в данном случае) мало, и даже напротив: так потенциальные баги с неинициализированными значениями проявляются позже.
Additional InformationС другой стороны, допускаю что точечная правка в Settings Control и не имеет большого смысла.
Shmuel wrote

В LuaFAR API есть много функций с опциональными параметрами и не обязательно последними в списке параметров.


https://forum.farmanager.com/viewtopic.php?p=151128#p151128
TagsSettingsControl

Activities

JohnDoe

2018-11-07 16:21

updater   bugnote:0016297

Last edited: 2018-11-08 13:02

View 2 revisions

Собственно, приведу реальный пример, который заставил меня обратить внимание на проблему:

local subkey = settings:OpenSubkey(F.FSSF_ROOT,"somekey")
local items = settings:Enum(subkey)

Если пользователь не убедился в успехе операции OpenSubkey, то в Enum передаётся nil.
А в результате ошибка остаётся незамеченной, потому что Enum воспринял nil как корень, и мы получили с виду нормальную таблицу items.

Или вот другой пример, из чужого кода:
local key = obj:CreateSubkey(obj:CreateSubkey(0,Author),KeysPart) -- откроем/создадим 
раздел


shmuel

2018-12-15 17:47

developer   bugnote:0016383

LuaFAR build 679.

JohnDoe

2018-12-16 15:43

updater   bugnote:0016384

Спасибо, работает.
Один вопрос: может стоило сохранить возможность принимать флаги-строки?

settings:OpenSubkey("FSSF_ROOT",...

shmuel

2018-12-16 15:54

developer   bugnote:0016385

> может стоило сохранить возможность принимать флаги-строки?
Эту возможность никто не убирал, просто в приведенном вами примере её и не было. Надо будет поправить.

shmuel

2018-12-16 17:43

developer   bugnote:0016386

Вот сейчас сделал параметр Root флагом (везде, где он есть).

JohnDoe

2018-12-17 11:52

updater   bugnote:0016387

Спасибо.
Благодаря этому тикету вот уже сходу нашёл у себя один баг с неинициализированным значением)

Issue History

Date Modified Username Field Change
2018-10-30 13:35 JohnDoe New Issue
2018-10-30 17:41 JohnDoe Tag Attached: SettingsControl
2018-11-07 16:21 JohnDoe Note Added: 0016297
2018-11-08 13:02 JohnDoe Note Edited: 0016297 View Revisions
2018-12-15 17:47 shmuel Assigned To => shmuel
2018-12-15 17:47 shmuel Status new => feedback
2018-12-15 17:47 shmuel Note Added: 0016383
2018-12-16 15:43 JohnDoe Note Added: 0016384
2018-12-16 15:43 JohnDoe Status feedback => assigned
2018-12-16 15:54 shmuel Note Added: 0016385
2018-12-16 17:43 shmuel Note Added: 0016386
2018-12-17 11:52 JohnDoe Status assigned => resolved
2018-12-17 11:52 JohnDoe Note Added: 0016387
2018-12-17 20:03 shmuel Status resolved => closed
2018-12-17 20:03 shmuel Resolution open => fixed