aboutsummaryrefslogtreecommitdiffstats
path: root/ext/syck/handler.c
diff options
context:
space:
mode:
authorwhy <why@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2003-08-19 16:38:02 +0000
committerwhy <why@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2003-08-19 16:38:02 +0000
commit360b0a015aba72f62ea2ffee4f52ce2b9132a2d1 (patch)
treed9ea3de53d9d04bd0234fd061fdcfda9e57910ec /ext/syck/handler.c
parent94c2e6f18a7e3146802ebc5c08b4cbec627143f5 (diff)
downloadruby-360b0a015aba72f62ea2ffee4f52ce2b9132a2d1.tar.gz
* ext/syck/syck.h: Parser definition problems on HP-UX. [ruby-talk:79389]
* ext/syck/handler.c (syck_hdlr_get_anchor): Memory leak. * ext/syck/syck.s (syck_io_file_read): Bad arguments to fread. * ext/syck/rubyext.c: Tainting issues. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4414 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ext/syck/handler.c')
-rw-r--r--ext/syck/handler.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/ext/syck/handler.c b/ext/syck/handler.c
index 0a7ee8c10f..ca15fd03a2 100644
--- a/ext/syck/handler.c
+++ b/ext/syck/handler.c
@@ -1,5 +1,5 @@
/*
- * handler.h
+ * handler.c
*
* $Author$
* $Date$
@@ -73,6 +73,7 @@ syck_hdlr_get_anchor( SyckParser *p, char *a )
{
if ( n != (void *)1 )
{
+ S_FREE( a );
return n;
}
else
@@ -94,7 +95,16 @@ syck_hdlr_get_anchor( SyckParser *p, char *a )
{
n = (p->bad_anchor_handler)( p, a );
}
- n->anchor = a;
+
+ if ( n->anchor )
+ {
+ S_FREE( a );
+ }
+ else
+ {
+ n->anchor = a;
+ }
+
return n;
}