From 1e60af4d6779e739d205ef63f05ebfd3fb2f7223 Mon Sep 17 00:00:00 2001 From: kosaki Date: Thu, 27 Jan 2011 17:36:32 +0000 Subject: [PATCH] * hash.c (rb_hash_fetch_m): add GC guard to prevent intermediate variable from GC. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30683 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 5 +++++ hash.c | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 814cefd514..fce9bb0421 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Fri Jan 28 02:35:41 2011 KOSAKI Motohiro + + * hash.c (rb_hash_fetch_m): add GC guard to prevent intermediate + variable from GC. + Fri Jan 28 01:33:51 2011 KOSAKI Motohiro * test/ruby/test_process.rb (TestProcess#test_too_long_path) diff --git a/hash.c b/hash.c index c7ac394bcb..2e9d70dcc5 100644 --- a/hash.c +++ b/hash.c @@ -583,7 +583,7 @@ rb_hash_fetch_m(int argc, VALUE *argv, VALUE hash) if (!RHASH(hash)->ntbl || !st_lookup(RHASH(hash)->ntbl, key, &val)) { if (block_given) return rb_yield(key); if (argc == 1) { - VALUE desc = rb_protect(rb_inspect, key, 0); + volatile VALUE desc = rb_protect(rb_inspect, key, 0); if (NIL_P(desc) || RSTRING_LEN(desc) > 65) { desc = rb_any_to_s(key); }