From 6fb9349d85960858023eb9c16826b68408279175 Mon Sep 17 00:00:00 2001 From: nobu Date: Sat, 16 May 2015 12:56:48 +0000 Subject: allocate structs with wrapper * parse.y (rb_parser_new, ripper_s_allocate): allocate structs with making new wrapper objects and get rid of potential memory leak. * variable.c (rb_autoload): ditto. * ext/digest/digest.c (rb_digest_base_alloc): ditto. * ext/strscan/strscan.c (strscan_s_allocate): ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50511 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- parse.y | 24 +++++++----------------- 1 file changed, 7 insertions(+), 17 deletions(-) (limited to 'parse.y') diff --git a/parse.y b/parse.y index 54850e7e63..36845b4041 100644 --- a/parse.y +++ b/parse.y @@ -10659,22 +10659,14 @@ rb_reserved_word(const char *str, unsigned int len) return reserved_word(str, len); } -static struct parser_params * -parser_new(void) -{ - struct parser_params *p; - - p = ZALLOC(struct parser_params); - parser_initialize(p); - return p; -} - VALUE rb_parser_new(void) { - struct parser_params *p = parser_new(); - - return TypedData_Wrap_Struct(0, &parser_data_type, p); + struct parser_params *p; + VALUE parser = TypedData_Make_Struct(0, struct parser_params, + &parser_data_type, p); + parser_initialize(p); + return parser; } #endif @@ -11124,10 +11116,8 @@ static VALUE ripper_s_allocate(VALUE klass) { struct parser_params *p; - VALUE self; - - p = ZALLOC(struct parser_params); - self = TypedData_Wrap_Struct(klass, &parser_data_type, p); + VALUE self = TypedData_Make_Struct(klass, struct parser_params, + &parser_data_type, p); p->value = self; return self; } -- cgit v1.2.3