summaryrefslogtreecommitdiffstats
path: root/ext/syck/node.c
diff options
context:
space:
mode:
authorwhy <why@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2004-04-26 23:37:37 +0000
committerwhy <why@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2004-04-26 23:37:37 +0000
commit0d701774d8b885ffe70b044df817d60979a39632 (patch)
treebce523b227d1020c7b2eebe70596d1c988b8ae69 /ext/syck/node.c
parenta49963f27108175abc621bc6afa8a2d3971874f9 (diff)
downloadruby-0d701774d8b885ffe70b044df817d60979a39632.tar.gz
ruby-0d701774d8b885ffe70b044df817d60979a39632.tar.xz
ruby-0d701774d8b885ffe70b044df817d60979a39632.zip
* lib/yaml/rubytypes.rb: passing Range tests.
* ext/syck/syck.h: version 0.44. * ext/syck/gram.c: transfers no longer open an indentation. fixed transfers which precede blocks. * ext/syck/token.c: ditto. * ext/syck/syck.c: fixed segfault if an anchor has been released already. * ext/syck/node.c (syck_free_members): organized order of free'd nodes. * ext/syck/rubyext.c (syck_emitter_write_m): test for proper string with StringValue. git-svn-id: http://svn.ruby-lang.org/repos/ruby/branches/ruby_1_8@6222 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ext/syck/node.c')
-rw-r--r--ext/syck/node.c23
1 files changed, 17 insertions, 6 deletions
diff --git a/ext/syck/node.c b/ext/syck/node.c
index f99970055..99bb07bc7 100644
--- a/ext/syck/node.c
+++ b/ext/syck/node.c
@@ -297,27 +297,38 @@ syck_seq_read( SyckNode *seq, long idx )
void
syck_free_members( SyckNode *n )
{
+ if ( n == NULL ) return;
+
switch ( n->kind )
{
case syck_str_kind:
- if ( n->data.str->ptr != NULL )
+ if ( n->data.str != NULL )
{
S_FREE( n->data.str->ptr );
n->data.str->ptr = NULL;
n->data.str->len = 0;
S_FREE( n->data.str );
+ n->data.str = NULL;
}
break;
case syck_seq_kind:
- S_FREE( n->data.list->items );
- S_FREE( n->data.list );
+ if ( n->data.list != NULL )
+ {
+ S_FREE( n->data.list->items );
+ S_FREE( n->data.list );
+ n->data.list = NULL;
+ }
break;
case syck_map_kind:
- S_FREE( n->data.pairs->keys );
- S_FREE( n->data.pairs->values );
- S_FREE( n->data.pairs );
+ if ( n->data.pairs != NULL )
+ {
+ S_FREE( n->data.pairs->keys );
+ S_FREE( n->data.pairs->values );
+ S_FREE( n->data.pairs );
+ n->data.pairs = NULL;
+ }
break;
}
}