View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0002754 | Far Manager | Plugins API.Editor | public | 2014-08-01 17:57 | 2014-08-08 14:25 |
Reporter | JohnDoe | Assigned To | |||
Priority | normal | Severity | crash | Reproducibility | sometimes |
Status | new | Resolution | open | ||
Product Version | 3.0 | ||||
Summary | 0002754: ECTL_SELECT: не проверяется корректность координат, что может приводить к падению | ||||
Description | http://api.farmanager.com/ru/structures/editorselect.html Сказано, что поля BlockStartLine и BlockStartPos могут принимать значение -1. Однако, если (ошибочно) передать другие отрицательные значения, то ECTL_SELECT выполнится как будто без ошибок. Однако, в результате переданные некорректные значения будут зафиксированы, и именно они будут возвращаться ECTL_GETINFO и ECTL_GETSTRING. | ||||
Steps To Reproduce | ECTL_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 ] ║ ╚════════════════════════════════════════╝ | ||||
Tags | No tags attached. | ||||
Build | |||||