From 62b89f1a61f66a0a9e9189f42a12f293aadd32a8 Mon Sep 17 00:00:00 2001 From: akr Date: Sat, 5 Jun 2010 02:01:29 +0000 Subject: * error.c (rb_name_err_mesg_new): guard mesg, recv and method. The problem in [ruby-dev:41464] is caused because mesg is collected. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_2@28163 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- error.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'error.c') diff --git a/error.c b/error.c index d5589ccdaf..85f4c2a1be 100644 --- a/error.c +++ b/error.c @@ -825,11 +825,16 @@ VALUE rb_name_err_mesg_new(VALUE obj, VALUE mesg, VALUE recv, VALUE method) { VALUE *ptr = ALLOC_N(VALUE, NAME_ERR_MESG_COUNT); + VALUE result; ptr[0] = mesg; ptr[1] = recv; ptr[2] = method; - return TypedData_Wrap_Struct(rb_cNameErrorMesg, &name_err_mesg_data_type, ptr); + result = TypedData_Wrap_Struct(rb_cNameErrorMesg, &name_err_mesg_data_type, ptr); + RB_GC_GUARD(mesg); + RB_GC_GUARD(recv); + RB_GC_GUARD(method); + return result; } /* :nodoc: */ -- cgit v1.2.3