summaryrefslogtreecommitdiffstats
path: root/ext/syck/rubyext.c
diff options
context:
space:
mode:
authorwhy <why@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2004-06-29 17:34:08 +0000
committerwhy <why@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2004-06-29 17:34:08 +0000
commitfedbe23070d744d35ffcced03f2c3e115d94e3b2 (patch)
treef157db528bfd7fddf106618208e572d0853d43cc /ext/syck/rubyext.c
parent97dd6889225efd3c7cb106bbad893f9e69d36bdf (diff)
downloadruby-fedbe23070d744d35ffcced03f2c3e115d94e3b2.tar.gz
ruby-fedbe23070d744d35ffcced03f2c3e115d94e3b2.tar.xz
ruby-fedbe23070d744d35ffcced03f2c3e115d94e3b2.zip
* ext/syck/rubyext.c (syck_emitter_new): set buffer after
Data_Wrap_Struct to avoid possible GC. [ruby-talk:104835] git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@6543 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ext/syck/rubyext.c')
-rw-r--r--ext/syck/rubyext.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/ext/syck/rubyext.c b/ext/syck/rubyext.c
index c7c0ef1db..cdf184c43 100644
--- a/ext/syck/rubyext.c
+++ b/ext/syck/rubyext.c
@@ -907,7 +907,7 @@ syck_loader_initialize( self )
rb_hash_aset(families, rb_str_new2( YAML_DOMAIN ), rb_hash_new());
rb_hash_aset(families, rb_str_new2( RUBY_DOMAIN ), rb_hash_new());
- return self;
+ return self;
}
/*
@@ -1286,14 +1286,13 @@ syck_emitter_new(argc, argv, class)
{
VALUE pobj, options, init_argv[1];
SyckEmitter *emitter = syck_new_emitter();
+ rb_scan_args(argc, argv, "01", &options);
+
+ pobj = Data_Wrap_Struct( class, syck_mark_emitter, syck_free_emitter, emitter );
syck_emitter_ignore_id( emitter, Qnil );
syck_emitter_handler( emitter, rb_syck_output_handler );
-
emitter->bonus = (void *)rb_str_new2( "" );
- rb_scan_args(argc, argv, "01", &options);
- pobj = Data_Wrap_Struct( class, syck_mark_emitter, syck_free_emitter, emitter );
-
if ( ! rb_obj_is_instance_of( options, rb_cHash ) )
{
options = rb_hash_new();