From a711b321b755a94275c616e070eff8f411e3f250 Mon Sep 17 00:00:00 2001 From: ocean Date: Sat, 31 Dec 2005 10:57:06 +0000 Subject: * 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 --- ext/syck/rubyext.c | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) (limited to 'ext/syck') 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; } -- cgit v1.2.3