```
$ echo 'S h o b o n SPC' | skk --user-dict=mydict2.skkdict
**
ERROR:skk.c:789:string_replace: code should not be reached
Bail out! ERROR:skk.c:789:string_replace: code should not be reached
zsh: done echo 'S h o b o n SPC' |
zsh: IOT instruction (core dumped) skk --user-dict=mydict2.skkdict
$
```
(concat "\050´・ω・`\051")
しょぼん /(concat "\050´・ω・`\051")/
で libskk がクラッシュするのでこんな表情にならざるをえない
string_replace でクラッシュしているらしいのだが、そんなごくごく普通の関数っぽいやつ誰が呼んだか絞りきれなくないか?
いや早計か? これ static 関数でないから別のところから呼ばれる可能性はあるかもしれんな
そりゃクラッシュするわ、不正な UTF-8 シーケンスなんだから……
(concat "\050-") とかだと大丈夫なので UTF-8 が悪さをしているのは間違いないのだが、はてさて。
念の為
;; -*- mode: fundamental; coding: utf-8 -*-
を入れても結果は変わらなかった。 (そもそも読みの「あ」が認識されている時点でそこではないのはわかっていたが)
https://github.com/ueno/libskk/blob/d7c3293ac6770b92f671d501cc8c3fd83eef783d/libskk/expr.vala#L114
どうも文字として -1 が返されているのを検査せず unichar にキャストした結果があれになるらしい。
vala の開発環境なんて整備していないので漢の printf デバッグで全てを薙ぎ払いました
index--; しているのが「get_next_char(ref index, out uc) で index が次の文字へ進められてしまうのでそれを戻す」という意図だが octal/hex escape の直後に non-ASCII 文字があると2バイト以上進んでしまい、これを index--; で戻すとインデックスが文字の先頭を指さなくなる
なんかテスト書こうとしたらまた別の不具合踏んでそうな雰囲気あるんだけど、流石にもう嫌です
Fix crash when non-ASCII character follows an escaped characters by lo48576 · Pull Request #88 · ueno/libskk
https://github.com/ueno/libskk/pull/88
はい提出