29065


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

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

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

[code]

    551        row->render = malloc(row->size + tabs*8 + nonprint*9 + 1);
    
[/code]

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

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

[code]

    543        int tabs = 0, nonprint = 0, j, idx;
    
[/code]

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