summaryrefslogtreecommitdiffstats
path: root/ext/syck/rubyext.c
diff options
context:
space:
mode:
authorwhy <why@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2003-06-05 04:43:05 +0000
committerwhy <why@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2003-06-05 04:43:05 +0000
commitad2d401e02fe77626e79d96269cecb827996729a (patch)
treec0485110aa5ea341f821cb6bfa210041b71813e3 /ext/syck/rubyext.c
parent755671e73d5d19e837a180f6bd17fe3619253bef (diff)
downloadruby-ad2d401e02fe77626e79d96269cecb827996729a.tar.gz
ruby-ad2d401e02fe77626e79d96269cecb827996729a.tar.xz
ruby-ad2d401e02fe77626e79d96269cecb827996729a.zip
* ext/syck/token.c: directives choked on a period.
* ext/syck/gram.y: anchors work above a collection. [ruby-core:1071] * ext/syck/handler.c, ext/syck/syck.c: ensure a fresh strtable between parser iterations. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@3905 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ext/syck/rubyext.c')
-rw-r--r--ext/syck/rubyext.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/ext/syck/rubyext.c b/ext/syck/rubyext.c
index 4d5fdb18d..df4d4703b 100644
--- a/ext/syck/rubyext.c
+++ b/ext/syck/rubyext.c
@@ -438,6 +438,14 @@ rb_syck_ensure(parser)
return 0;
}
+static void
+syck_mark_parser(parser)
+ SyckParser *parser;
+{
+ rb_gc_mark(parser->root);
+ rb_gc_mark(parser->root_on_error);
+}
+
/*
* YAML::Syck::Parser.new
*/
@@ -451,7 +459,7 @@ syck_parser_new(argc, argv, class)
SyckParser *parser = syck_new_parser();
rb_scan_args(argc, argv, "01", &options);
- pobj = Data_Wrap_Struct( class, 0, syck_free_parser, parser );
+ pobj = Data_Wrap_Struct( class, syck_mark_parser, syck_free_parser, parser );
syck_parser_set_root_on_error( parser, Qnil );