summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--ext/syck/rubyext.c9
2 files changed, 9 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index 3f8719f087..20e360f8cf 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Wed Jun 30 02:41:10 2004 why the lucky stiff <why@ruby-lang.org>
+
+ * ext/syck/rubyext.c (syck_emitter_new): set buffer after
+ Data_Wrap_Struct to avoid possible GC. [ruby-talk:104835]
+
Tue Jun 29 10:31:19 2004 Nobuyoshi Nakada <nobu@ruby-lang.org>
* eval.c (rb_eval_cmd, rb_thread_trap_eval): restore safe level.
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();