diff options
author | why <why@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2003-08-19 16:38:02 +0000 |
---|---|---|
committer | why <why@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2003-08-19 16:38:02 +0000 |
commit | 360b0a015aba72f62ea2ffee4f52ce2b9132a2d1 (patch) | |
tree | d9ea3de53d9d04bd0234fd061fdcfda9e57910ec /ext/syck/handler.c | |
parent | 94c2e6f18a7e3146802ebc5c08b4cbec627143f5 (diff) |
* 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.c | 14 |
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; } |