summaryrefslogtreecommitdiff
path: root/ext
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
commit24d2835e27f1c0a0ef09b5399888e455c975fb34 (patch)
treef157db528bfd7fddf106618208e572d0853d43cc /ext
parent1b17df7bc1ee372420101c9845013cc01c1725af (diff)
* ext/syck/rubyext.c (syck_emitter_new): set buffer after
Data_Wrap_Struct to avoid possible GC. [ruby-talk:104835] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6543 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ext')
-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 c7c0ef1dbd..cdf184c432 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();