summaryrefslogtreecommitdiff
path: root/ext/syck/handler.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
commit017d4ff10ae32ed6570b5d33a8106bd1f22e008f (patch)
treec0485110aa5ea341f821cb6bfa210041b71813e3 /ext/syck/handler.c
parent45c7ea552d0293aa217bbb496d4238754ba701d2 (diff)
* 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: svn+ssh://ci.ruby-lang.org/ruby/trunk@3905 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ext/syck/handler.c')
-rw-r--r--ext/syck/handler.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/ext/syck/handler.c b/ext/syck/handler.c
index f2e387a925..d5a4895c5e 100644
--- a/ext/syck/handler.c
+++ b/ext/syck/handler.c
@@ -31,6 +31,10 @@ SyckNode *
syck_hdlr_add_anchor( SyckParser *p, char *a, SyckNode *n )
{
n->anchor = a;
+ if ( p->anchors == NULL )
+ {
+ p->anchors = st_init_strtable();
+ }
st_insert( p->anchors, (st_data_t)a, (st_data_t)n );
return n;
}
@@ -40,9 +44,12 @@ syck_hdlr_add_alias( SyckParser *p, char *a )
{
SyckNode *n;
- if ( st_lookup( p->anchors, (st_data_t)a, (st_data_t *)&n ) )
+ if ( p->anchors != NULL )
{
- return n;
+ if ( st_lookup( p->anchors, (st_data_t)a, (st_data_t *)&n ) )
+ {
+ return n;
+ }
}
//