summaryrefslogtreecommitdiff
path: root/ext/syck/yaml2byte.c
diff options
context:
space:
mode:
authorwhy <why@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2005-09-20 06:46:45 +0000
committerwhy <why@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2005-09-20 06:46:45 +0000
commitb36eba6e8752f794d898b9543e40868ad46c2ea9 (patch)
treee1dd7146e9bc2cfb3f97950abb16ce6f78b9d943 /ext/syck/yaml2byte.c
parent56a97f11d039e2fd9107ea76ec2d0af2e447136e (diff)
* ext/syck/emitter.c (syck_scan_scalar): prevent indicators from
appearing alone or at the end of plain scalars. [ruby-core:5826] * ext/syck/emitter.c (syck_emit_scalar): treat typed scalar nodes as complex keys. * lib/syck.h: version 0.60. * lib/yaml/basenode.rb (YAML::BaseNode#at): transform keys during key searches. * ext/syck/rubyext.c: loading of binary-typed nodes. prevent emission of plain strings that look like symbols, but which aren't. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@9241 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ext/syck/yaml2byte.c')
-rw-r--r--ext/syck/yaml2byte.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/ext/syck/yaml2byte.c b/ext/syck/yaml2byte.c
index 46173e861e..61cd8c8eac 100644
--- a/ext/syck/yaml2byte.c
+++ b/ext/syck/yaml2byte.c
@@ -226,12 +226,17 @@ syck_yaml2byte(char *yamlstr)
syck_parser_implicit_typing( parser, 1 );
syck_parser_taguri_expansion( parser, 1 );
oid = syck_parse( parser );
- syck_lookup_sym( parser, oid, (char **)&sav );
- ret = S_ALLOC_N( char, strlen( sav->buffer ) + 3 );
- ret[0] = '\0';
- strcat( ret, "D\n" );
- strcat( ret, sav->buffer );
+ if ( syck_lookup_sym( parser, oid, (char **)&sav ) == 1 ) {
+ ret = S_ALLOC_N( char, strlen( sav->buffer ) + 3 );
+ ret[0] = '\0';
+ strcat( ret, "D\n" );
+ strcat( ret, sav->buffer );
+ }
+ else
+ {
+ ret = NULL;
+ }
syck_free_parser( parser );
return ret;