From: "藤本尚邦 / FUJIMOTO Hisakuni" Date: 1997-11-19T03:46:13+09:00 Subject: [ruby-list:5336] DBM.delete_if bug ? はじめまして、藤本といいます。最近 ruby を使い始めまして、とってもとっ ても気に入ってます \(^o^)/ dbm.c の中にバグらしき箇所をみつけましたのでご報告します。もし間違っ ていたらすみません。関数 fdbm_delete_if の定義のところで、 static VALUE fdbm_delete_if(obj) VALUE obj; { datum key, val; struct dbmdata *dbmp; DBM *dbm; VALUE keystr, valstr; rb_secure(4); GetDBM(obj, dbmp); /* ここに dbm = dbmp->di_dbm; が必要では? */ for (key = dbm_firstkey(dbm); key.dptr; key = dbm_nextkey(dbm)) { ... のようにローカル変数 dbm を初期化しないまま dbm_firstkey を呼んでいる のですが、GetDBM() のあと dbm = dbmp->di_dbm が必要じゃないでしょうか? 僕のところ(Linux, RedHat4.1)では ndbm.h がなくて DBM クラスが使え ないみたいなので、名前がgdbm_で始まるgdbm.hの関数を使うように dbm.c を 書き換えました。それで動作確認しているときに delete_if を送ったところ で止まってしまうので発見しました。 ============================================================= 藤本尚邦 FUJIMOTO Hisakuni hisa@imasy.or.jp =============================================================