antirez / antirez/kilo

editorDelRow increments row indices instead of decrementing them

未关闭
#117 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
主要语言
C
星标
9.1k
派生
995
PR 合并指标
30 天内没有已合并 PR

描述

In `editorDelRow` (line 628), after `memmove` shifts rows left to fill the gap, the loop updates row indices:

```c
for (int j = at; j < E.numrows-1; j++) E.row[j].idx++;
```

This increments `idx`, but deletion should decrement it. After deleting row 5, row 6 (now at position 5) should have `idx = 5`, not `idx = 7`.

Compare with `editorInsertRow` (line 597), which correctly increments after shifting rows right:

```c
for (int j = at+1; j <= E.numrows; j++) E.row[j].idx++;
```

The fix is `E.row[j].idx--` instead of `E.row[j].idx++`.

The corrupted `idx` values cause `editorUpdateSyntax` to access wrong rows when checking for open multi-line comments (line 408), which can lead to the segfault reported in #28. PR #20 contains a fix but was never merged.

贡献指南

这个仓库没有索引到贡献指南

评估

这个 Issue 还没有评估数据。

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。