diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2015-05-16 12:56:29 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2015-05-16 12:56:29 +0000 |
commit | e73a5053fc179ee6ce774f5bab973b39dc3e3c45 (patch) | |
tree | 382100cd92c8fe645edae9c8e0fba362230a737a /error.c | |
parent | 193f5873094631dae283a8386dc98d8d9afda599 (diff) | |
download | ruby-e73a5053fc179ee6ce774f5bab973b39dc3e3c45.tar.gz |
wrapper object before alloc
* error.c (rb_name_err_mesg_new): new wrapper object before
allocate data area and get rid of potential memory leak.
GC guards are no longer needed.
* file.c (stat_new_0): ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50510 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'error.c')
-rw-r--r-- | error.c | 7 |
1 files changed, 2 insertions, 5 deletions
@@ -1155,16 +1155,13 @@ static const rb_data_type_t name_err_mesg_data_type = { VALUE rb_name_err_mesg_new(VALUE obj, VALUE mesg, VALUE recv, VALUE method) { + VALUE result = TypedData_Wrap_Struct(rb_cNameErrorMesg, &name_err_mesg_data_type, 0); VALUE *ptr = ALLOC_N(VALUE, NAME_ERR_MESG_COUNT); - VALUE result; ptr[0] = mesg; ptr[1] = recv; ptr[2] = method; - result = TypedData_Wrap_Struct(rb_cNameErrorMesg, &name_err_mesg_data_type, ptr); - RB_GC_GUARD(mesg); - RB_GC_GUARD(recv); - RB_GC_GUARD(method); + RTYPEDDATA_DATA(result) = ptr; return result; } |