DBMError: dbm_store failed (ruby1.8.7_p160)その3位

いろいろ弄るも上手く動かない。

  • dbm.c より
static VALUE
fdbm_store(obj, keystr, valstr)
    VALUE obj, keystr, valstr;
{
    datum key, val;
    struct dbmdata *dbmp;
    DBM *dbm;

    fdbm_modify(obj);
    keystr = rb_obj_as_string(keystr);
    valstr = rb_obj_as_string(valstr);

    key.dptr = RSTRING_PTR(keystr);
    key.dsize = RSTRING_LEN(keystr);

    val.dptr = RSTRING_PTR(valstr);
    val.dsize =RSTRING_LEN(valstr);

    GetDBM2(obj, dbmp, dbm);
    dbmp->di_size = -1;
    if (dbm_store(dbm, key, val, DBM_REPLACE)) {
#ifdef HAVE_DBM_CLEARERR
	dbm_clearerr(dbm);
#endif
	if (errno == EPERM) rb_sys_fail(0);
	rb_raise(rb_eDBMError, "dbm_store failed");
    }
    return valstr;
}

if (dbm_store(dbm, key, val, DBM_REPLACE))の中に入っているのだけは間違いない。やはりgdbm.dll側の問題なんだろうな。
参照しているのはYAML::DBM位なので無視してもいいんだが、それが悔しいんだよな。