diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2015-05-29 05:44:01 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2015-05-29 05:44:01 +0000 |
commit | dfe11b5df4c8c37f07685da46eea7670dcb562be (patch) | |
tree | ebb5a982234e827223776db8b157f6b5f9b8277f /ext/psych | |
parent | a287b53edd0a153695db628ae21c1328b5025c24 (diff) | |
download | ruby-dfe11b5df4c8c37f07685da46eea7670dcb562be.tar.gz |
psych: allocate structs with wrapper
* ext/psych/psych_emitter.c (allocate): allocate structs with
making new wrapper objects and get rid of potential memory leak.
* ext/psych/psych_parser.c (allocate): ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50672 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ext/psych')
-rw-r--r-- | ext/psych/psych_emitter.c | 5 | ||||
-rw-r--r-- | ext/psych/psych_parser.c | 4 |
2 files changed, 4 insertions, 5 deletions
diff --git a/ext/psych/psych_emitter.c b/ext/psych/psych_emitter.c index 4ba238102b..feffc54ce7 100644 --- a/ext/psych/psych_emitter.c +++ b/ext/psych/psych_emitter.c @@ -50,14 +50,13 @@ static const rb_data_type_t psych_emitter_type = { static VALUE allocate(VALUE klass) { yaml_emitter_t * emitter; - - emitter = xmalloc(sizeof(yaml_emitter_t)); + VALUE obj = TypedData_Make_Struct(klass, yaml_emitter_t, &psych_emitter_type, emitter); yaml_emitter_initialize(emitter); yaml_emitter_set_unicode(emitter, 1); yaml_emitter_set_indent(emitter, 2); - return TypedData_Wrap_Struct(klass, &psych_emitter_type, emitter); + return obj; } /* call-seq: Psych::Emitter.new(io, options = Psych::Emitter::OPTIONS) diff --git a/ext/psych/psych_parser.c b/ext/psych/psych_parser.c index faae460dd0..2caa8a09c3 100644 --- a/ext/psych/psych_parser.c +++ b/ext/psych/psych_parser.c @@ -70,11 +70,11 @@ static const rb_data_type_t psych_parser_type = { static VALUE allocate(VALUE klass) { yaml_parser_t * parser; + VALUE obj = TypedData_Make_Struct(klass, yaml_parser_t, &psych_parser_type, parser); - parser = xmalloc(sizeof(yaml_parser_t)); yaml_parser_initialize(parser); - return TypedData_Wrap_Struct(klass, &psych_parser_type, parser); + return obj; } static VALUE make_exception(yaml_parser_t * parser, VALUE path) |