ruby-trunk-changes r60130 - r60132

今日は拡張ライブラリ zlib の Zlib.gunzip のメモリリーク修正がありました。

nobu: r60130 2017-10-06 22:41:37 +0900

拡張ライブラリ zlib の Zlib.gunzip でメモリリークが発生しているのを修正しています。差分をみると構造体をオブジェクトで wrap するようにして、最後に DATA_PTR() をクリアしているので、例外発生時にリークしていたのをオブジェクトに wrap することで GC にまかせるようにする手法かなと思ったのですが、正常終了時にもリークしていたみたいなので、gz->end() がメモリ解放を含んでいて、そもそも解放処理がまったく行なわれていなかった気がします。 [ruby-core:83162] [Bug #13982]

nobu: r60131 2017-10-07 11:23:27 +0900

r60130 の続き。 例外発生時にマシンスタック上の有効でない領域にある構造体を wrap したオブジェクトを残すことで、GC で SEGV する可能性があったので、rb_ensure() を使って確実に処理を抜ける時にメモリ解放するようにしています。 [ruby-core:83162] [Bug #13982]

svn: r60132 2017-10-07 11:23:28 +0900

version.h の日付更新。