From 38d2bcd952d9768d0a920facb8d5660f6daf5ca2 Mon Sep 17 00:00:00 2001 From: knu Date: Mon, 23 Mar 2009 12:45:23 +0000 Subject: [PATCH] * 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. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@23057 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 8 ++++++++ ext/dbm/dbm.c | 3 ++- ext/sdbm/init.c | 3 ++- 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 + + * 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 * 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;