29065
kiloという1000行ほどで書かれたシンプルなエディタがあります

[kilo github page](https://github.com/antirez/kilo)

このコードを読んでいるのですが、551行目の意味がよくわかりません

```

    551        row->render = malloc(row->size + tabs*8 + nonprint*9 + 1);
    
```

`nonprint*9`はnon-printableなcharのために9byteも割り当てています

しかも、543行目で`nonprint = 0`となっており、この行以外で`nonprint`の値が操作されることはありません
(551行目では常に`nonprint = 0`となる)

```

    543        int tabs = 0, nonprint = 0, j, idx;
    
```

551行目の`nonprint*9`にはどのような意図があるのでしょうか?
CC BY-SA 3.0
2016-09-23T01:13:01.243
29062
2016-09-23T02:32:51.260
5246
question
c
kilo editorが非表示の文字のために9byteのメモリを割り当てようとする理由
推測に過ぎませんが、`editorRefreshScreen`関数では`HL_NONPRINT`に対して色変更のエスケープシーケンス(4byte)を2回出力していますから、4
+ 1 + 4 = 9 ではないでしょうか？

<https://github.com/antirez/kilo/blob/efd541bb6d272f953e049a85d411765eed1a2979/kilo.c#L897-L905>
CC BY-SA 3.0
2016-09-23T02:32:51.260
29065
2016-09-23T02:32:51.260
49
29062
answer