diff options
author | ocean <ocean@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2005-12-20 03:34:39 +0000 |
---|---|---|
committer | ocean <ocean@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2005-12-20 03:34:39 +0000 |
commit | f6eb5ab576d576d8d48c3aff8e33a83a2d6e96fb (patch) | |
tree | 4eb503b78ac5f2a9523e700a040ceb29027b7449 | |
parent | 55fe163a1e14c092b88643de5e7c2df518be2f22 (diff) | |
download | ruby-f6eb5ab576d576d8d48c3aff8e33a83a2d6e96fb.tar.gz ruby-f6eb5ab576d576d8d48c3aff8e33a83a2d6e96fb.tar.xz ruby-f6eb5ab576d576d8d48c3aff8e33a83a2d6e96fb.zip |
* ext/syck/rubyext.c (syck_node_transform): ruby object holding
explicitly freed SyckNode caused SEGV. [ruby-dev:28067]
... I think syck GC problem was solved now!
git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@9720 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | ext/syck/rubyext.c | 6 |
2 files changed, 9 insertions, 4 deletions
@@ -1,3 +1,10 @@ +Tue Dec 20 12:33:01 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp> + + * ext/syck/rubyext.c (syck_node_transform): ruby object holding + explicitly freed SyckNode caused SEGV. [ruby-dev:28067] + + ... I think syck GC problem was solved now! + Tue Dec 20 01:46:48 2005 Tanaka Akira <akr@m17n.org> * io.c (rb_f_backquote): fix a GC problem on diff --git a/ext/syck/rubyext.c b/ext/syck/rubyext.c index 8f8474aaf..52cda8fff 100644 --- a/ext/syck/rubyext.c +++ b/ext/syck/rubyext.c @@ -1783,7 +1783,7 @@ syck_node_transform( self ) SyckNode *n; SyckNode *orig_n; Data_Get_Struct(self, SyckNode, orig_n); - t = Data_Wrap_Struct( cNode, syck_node_mark, NULL, 0 ); + t = Data_Wrap_Struct( cNode, syck_node_mark, syck_free_node, 0 ); switch (orig_n->kind) { @@ -1824,9 +1824,7 @@ syck_node_transform( self ) n->anchor = syck_strndup( orig_n->anchor, strlen( orig_n->anchor ) ); } n->id = t; - t = rb_funcall( oDefaultResolver, s_node_import, 1, t ); - syck_free_node( n ); - return t; + return rb_funcall( oDefaultResolver, s_node_import, 1, t ); } /* |