summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2011-11-12 07:06:09 +0000
committerakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2011-11-12 07:06:09 +0000
commitdf2e1f85d2192be61eb5a8f8cb9663f47769101b (patch)
tree30a7433b9e41a724fd0bcd8472b780ffb64a911a
parent5c29d116c2d1dac5c6953bb60a3bda35df51d713 (diff)
* ext/dbm/extconf.rb: dbm_clearerr should be available in all ndbm
implementation. If it is not available, it is caused by header/library mismatch such that Berkeley DB header & gdbm library. * ext/dbm/dbm.c (fdbm_store): use dbm_clearerr() unconditionally. gdbm 1.9 provides it as a real function instead of a empty macro. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33723 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog9
-rw-r--r--ext/dbm/dbm.c2
-rw-r--r--ext/dbm/extconf.rb7
3 files changed, 11 insertions, 7 deletions
diff --git a/ChangeLog b/ChangeLog
index 62c72340bb..3894699414 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+Sat Nov 12 15:59:42 2011 Tanaka Akira <akr@fsij.org>
+
+ * ext/dbm/extconf.rb: dbm_clearerr should be available in all ndbm
+ implementation. If it is not available, it is caused by
+ header/library mismatch such that Berkeley DB header & gdbm library.
+
+ * ext/dbm/dbm.c (fdbm_store): use dbm_clearerr() unconditionally.
+ gdbm 1.9 provides it as a real function instead of a empty macro.
+
Sat Nov 12 13:35:33 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
* bootstraptest/runner.rb: don't suppress SIGINT.
diff --git a/ext/dbm/dbm.c b/ext/dbm/dbm.c
index 6413f3a5ee..e75166506b 100644
--- a/ext/dbm/dbm.c
+++ b/ext/dbm/dbm.c
@@ -639,9 +639,7 @@ fdbm_store(VALUE obj, VALUE keystr, VALUE 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");
}
diff --git a/ext/dbm/extconf.rb b/ext/dbm/extconf.rb
index a2c3b7c1a3..5c6c183eac 100644
--- a/ext/dbm/extconf.rb
+++ b/ext/dbm/extconf.rb
@@ -29,23 +29,20 @@ headers.found = []
headers.defs = nil
def headers.db_check(db)
- have_gdbm = false
hsearch = nil
case db
when /^db[2-5]?$/
hsearch = "-DDB_DBM_HSEARCH"
when "gdbm"
- have_gdbm = true
when "gdbm_compat"
- have_gdbm = true
have_library("gdbm") or return false
end
if (hdr = self.fetch(db, ["ndbm.h"]).find {|h| have_type("DBM", h, hsearch)} or
hdr = self.fetch(db, ["ndbm.h"]).find {|h| have_type("DBM", ["db.h", h], hsearch)}) and
- (have_library(db, 'dbm_open("", 0, 0)', hdr, hsearch) || have_func('dbm_open("", 0, 0)', hdr, hsearch))
- have_func('dbm_clearerr((DBM *)0)', hdr, hsearch) unless have_gdbm
+ (have_library(db, 'dbm_open("", 0, 0)', hdr, hsearch) || have_func('dbm_open("", 0, 0)', hdr, hsearch)) and
+ have_func('dbm_clearerr((DBM *)0)', hdr, hsearch)
if hsearch
$defs << hsearch
@defs = hsearch