memo.sugyan.com このブログを見て、rb_enc_prev_char の動きが気になった。 まず、 String#rindex がほんとに HAVE_MEMRCHR がないからかどうかを検証。 linux で ruby をコードからビルド。 $ git clone https://github.com/ruby/ruby $ cd ruby $ autoconf $ ./configure $ make $ ruby -e 'p "\x00\x01\x80\x00".rindex("\x01")' linux では 1 になる。しかし、string.c の str_rindex() の内容を無理やり HAVE_MEMRCHR の false 側にして再実行すると 2 になる。ということは、false側の str_rindex() に問題があることがわかる。 rb_enc_pr