diff --git a/ChangeLog b/ChangeLog index 8dd2cac35e..ab872dd4df 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +Wed Oct 20 04:17:55 2004 Yukihiro Matsumoto + + * ext/dbm/dbm.c (fdbm_delete_if): should check if deleting element + is a string. [ruby-dev:24490] + + * ext/sdbm/init.c (fsdbm_delete_if): ditto. + Wed Oct 20 01:37:18 2004 Yukihiro Matsumoto * array.c (rb_ary_times): Array#* should return an instance of diff --git a/ext/dbm/dbm.c b/ext/dbm/dbm.c index e72d8ebba0..c4f8b2b3f5 100644 --- a/ext/dbm/dbm.c +++ b/ext/dbm/dbm.c @@ -356,6 +356,7 @@ fdbm_delete_if(obj) for (i = 0; i < RARRAY(ary)->len; i++) { keystr = RARRAY(ary)->ptr[i]; + StringValue(keystr); key.dptr = RSTRING(keystr)->ptr; key.dsize = RSTRING(keystr)->len; if (dbm_delete(dbm, key)) { diff --git a/ext/sdbm/init.c b/ext/sdbm/init.c index ecd4fd9201..eec9e71a3c 100644 --- a/ext/sdbm/init.c +++ b/ext/sdbm/init.c @@ -334,6 +334,7 @@ fsdbm_delete_if(obj) for (i = 0; i < RARRAY(ary)->len; i++) { keystr = RARRAY(ary)->ptr[i]; + StringValue(keystr); key.dptr = RSTRING(keystr)->ptr; key.dsize = RSTRING(keystr)->len; if (sdbm_delete(dbm, key)) {