aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog8
-rw-r--r--ext/dbm/dbm.c3
-rw-r--r--ext/sdbm/init.c3
3 files changed, 12 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 2db5092e4b..ef9352f5d6 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+Mon Mar 23 21:41:14 2009 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/dbm/dbm.c (fdbm_initialize): Make the file variable
+ volatile, because FilePathValue() currently does not protect the
+ given variable from GC. (Probably it should)
+
+ * ext/sdbm/init.c (fsdbm_initialize): Ditto.
+
Mon Mar 23 19:22:14 2009 Akinori MUSHA <knu@iDaemons.org>
* file.c (rb_file_s_lstat): Back out.
diff --git a/ext/dbm/dbm.c b/ext/dbm/dbm.c
index 7a78f8dad0..84d331ae53 100644
--- a/ext/dbm/dbm.c
+++ b/ext/dbm/dbm.c
@@ -91,7 +91,8 @@ fdbm_alloc(VALUE klass)
static VALUE
fdbm_initialize(int argc, VALUE *argv, VALUE obj)
{
- VALUE file, vmode, vflags;
+ volatile VALUE file;
+ VALUE vmode, vflags;
DBM *dbm;
struct dbmdata *dbmp;
int mode, flags = 0;
diff --git a/ext/sdbm/init.c b/ext/sdbm/init.c
index 2e4f75cfbf..f630dc3cc9 100644
--- a/ext/sdbm/init.c
+++ b/ext/sdbm/init.c
@@ -82,7 +82,8 @@ fsdbm_alloc(VALUE klass)
static VALUE
fsdbm_initialize(int argc, VALUE *argv, VALUE obj)
{
- VALUE file, vmode;
+ volatile VALUE file;
+ VALUE vmode;
DBM *dbm;
struct dbmdata *dbmp;
int mode;