MRB_UTF8_STRING を指定して mruby-io を使うと、正常にデータを読み込めない。

おそらく このへん が原因で、 read メソッド内で文字列のサイズを bytesize でなく size で読んでいるため、IOから読んだ実際のバイト数と齟齬が起きているぽい。

たぶん read を使うと tellpos もちゃんと動かないはず。代わりに sysread すると良い。

参考

MRB_UTF8_STRING を有効にした状態で試すと以下のように、sizeは文字数を返す

> "あいうえお".size
 => 5
> "あいうえお".bytesize
 => 15

MRB_UTF8_STRING を有効にしてないとこんなん↓

> "あいうえお".size
 => 15
> "あいうえお".bytesize
 => 15