diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | error.c | 7 |
2 files changed, 11 insertions, 1 deletions
@@ -1,3 +1,8 @@ +Sat Jun 5 11:00:48 2010 Tanaka Akira <akr@fsij.org> + + * error.c (rb_name_err_mesg_new): guard mesg, recv and method. + The problem in [ruby-dev:41464] is caused because mesg is collected. + Sat Jun 5 10:03:31 2010 Tanaka Akira <akr@fsij.org> * .gdbinit (rp): detect and show RTypedData. @@ -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: */ |