eval.c (rb_f_eval): defer pointer retrieval to prevent unsafe sourcefile string modification. [ruby-dev:24373]
evalのline引数に与えたオブジェクトのto_intメソッドでfile引数の文字列を変更するとcore dump。
io.c (io_read): block string buffer modification during rb_io_fread() by freezing it temporarily. [ruby-dev:24366]
IO#read()の第2引数(読み込みバッファ)の値を読み込み中に(スレッドなどで)変更するとcore dump。
io.c (rb_io_s_popen): mode argument may be altered. [ruby-dev:24375]
IO.openのmode引数を(以下同文)。 一時はStringValuePtrで取り出した文字列はどこかでpin downしようかとも思ったが、 結局確実にprotectする方法はないのであきらめた。
file.c (rb_file_s_basename): ext argument may be altered. [ruby-dev:24377]
basenameのext引数を(以下同文)。
enum.c (enum_sort_by): use NODE instead of 2 element arrays. [ruby-dev:24378]
無駄なメモリ割り当てを減らし高速化するためと、 比較中に配列を操作されることによるcore dumpの危険性を無くすため。
string.c (rb_str_chomp_bang): StringValue() may change the receiver. [ruby-dev:24371]
chompのrs引数を(以下同文)。
バグ修正ばかりで機能改善とかに手をつけられないが、 バグレポートがなければ進んでいるかというと、どうだろうか。
修学旅行から無事帰ってきた。十分楽しんだようだ。疲れたのか、夜は「あっ」と言う間に寝てしまう。
今日が一日目。いいなあ、楽しんでるかなあ。