View Issue Details

IDProjectCategoryView StatusLast Update
0002754Far ManagerPlugins API.Editorpublic2014-08-08 14:25
ReporterJohnDoe Assigned To 
PrioritynormalSeveritycrashReproducibilitysometimes
Status newResolutionopen 
Product Version3.0 
Summary0002754: ECTL_SELECT: не проверяется корректность координат, что может приводить к падению
Descriptionhttp://api.farmanager.com/ru/structures/editorselect.html
Сказано, что поля BlockStartLine и BlockStartPos могут принимать значение -1.
Однако, если (ошибочно) передать другие отрицательные значения, то ECTL_SELECT выполнится как будто без ошибок.

Однако, в результате переданные некорректные значения будут зафиксированы, и именно они будут возвращаться ECTL_GETINFO и ECTL_GETSTRING.
Steps To ReproduceECTL_GETINFO:
editor.Select(nil,{
  BlockType="BTYPE_STREAM",
  BlockStartPos=1,
  BlockStartLine=-10,
  BlockWidth=1,
  BlockHeight=1,
})
far.Show(editor.GetInfo().BlockStartLine)


ECTL_GETSTRING:
editor.Select(nil,{
  BlockType="BTYPE_STREAM",
  BlockStartPos=-10,
  BlockStartLine=1,
  BlockWidth=0,
  BlockHeight=1,
})
far.Show(editor.GetString(nil,1,0).SelStart)
Additional InformationЕсли передать некорректное отрицательное значение BlockStartLine, то работа будет выполнена для текущей строки.
Но если удалить получивший блок (ShiftDel), а потом вернуть с помощью CtrlZ, то восстановлена будет не текущая строка, а первая.

Если передать некорректное отрицательное значение BlockStartPos, и попытаться удалить получивший блок, то получим Exception:
╔══════════ Exception occurred ══════════╗
║ invalid string position ║
╟────────────────────────────────────────╢
║ { Terminate Far } [ Debug ] [ Ignore ] ║
╚════════════════════════════════════════╝
TagsNo tags attached.
Build

Activities

JohnDoe

2014-08-08 14:25

updater   bugnote:0012843

Оказывается недоделали в 0000268

Issue History

Date Modified Username Field Change
2014-08-01 17:57 JohnDoe New Issue
2014-08-08 14:25 JohnDoe Note Added: 0012843