summaryrefslogtreecommitdiff
path: root/ext/syck
diff options
context:
space:
mode:
authorocean <ocean@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2005-12-31 10:57:06 +0000
committerocean <ocean@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2005-12-31 10:57:06 +0000
commita711b321b755a94275c616e070eff8f411e3f250 (patch)
tree8f9f22d4041304874a7e1e6e285fe4b65a5ac6e2 /ext/syck
parent12cb36f9bb2d8e6089ef1a88b90ff449b0025926 (diff)
* ext/syck/rubyext.c: attribute name was truncated with Rev1.64.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@9780 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ext/syck')
-rw-r--r--ext/syck/rubyext.c18
1 files changed, 8 insertions, 10 deletions
diff --git a/ext/syck/rubyext.c b/ext/syck/rubyext.c
index f75e3ca561..192e6c46c1 100644
--- a/ext/syck/rubyext.c
+++ b/ext/syck/rubyext.c
@@ -115,15 +115,14 @@ rb_syck_compile(self, port)
oid = syck_parse( parser );
syck_lookup_sym( parser, oid, (char **)&sav );
- bc = rb_str_new(0, strlen( sav->buffer ) + 3);
- ret = RSTRING(bc)->ptr;
+ ret = S_ALLOCA_N( char, strlen( sav->buffer ) + 3 );
ret[0] = '\0';
strcat( ret, "D\n" );
strcat( ret, sav->buffer );
syck_free_parser( parser );
- rb_str_resize( bc, strlen(ret) );
+ bc = rb_str_new2( ret );
if ( taint ) OBJ_TAINT( bc );
return bc;
}
@@ -1039,17 +1038,16 @@ syck_resolver_node_import( self, node )
*/
VALUE
syck_set_ivars( vars, obj )
- VALUE vars, obj;
+ VALUE vars, obj;
{
VALUE ivname = rb_ary_entry( vars, 0 );
char *ivn;
- ID ivns;
StringValue( ivname );
- ivn = S_ALLOC_N( char, RSTRING(ivname)->len + 2 );
- snprintf(ivn, RSTRING(ivname)->len + 1, "@%s", RSTRING(ivname)->ptr);
- ivns = rb_intern(ivn);
- S_FREE( ivn );
- rb_ivar_set( obj, ivns, rb_ary_entry( vars, 1 ) );
+ ivn = S_ALLOCA_N( char, RSTRING(ivname)->len + 2 );
+ ivn[0] = '@';
+ ivn[1] = '\0';
+ strncat( ivn, RSTRING(ivname)->ptr, RSTRING(ivname)->len );
+ rb_iv_set( obj, ivn, rb_ary_entry( vars, 1 ) );
return Qnil;
}