summaryrefslogtreecommitdiff
path: root/ext/syck
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2004-12-15 16:01:11 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2004-12-15 16:01:11 +0000
commite0ddacfc36bfeeecb0fcf37d3dc21eece522d3b9 (patch)
treeee112208e1eaa2f443b423e208eab353bf389ae8 /ext/syck
parent8a92fc97092161be3fc44e58a84976f782fcba98 (diff)
* ext/syck/rubyext.c (rb_syck_io_str_read): [ruby-core:03973]
* object.c (rb_obj_id_obsolete): warn always. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@7569 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ext/syck')
-rw-r--r--ext/syck/rubyext.c15
1 files changed, 9 insertions, 6 deletions
diff --git a/ext/syck/rubyext.c b/ext/syck/rubyext.c
index c54deea618..cd813132c2 100644
--- a/ext/syck/rubyext.c
+++ b/ext/syck/rubyext.c
@@ -138,6 +138,7 @@ rb_syck_io_str_read( char *buf, SyckIoStr *str, long max_size, long skip )
VALUE str2 = rb_funcall2(src, s_read, 1, &n);
if (!NIL_P(str2))
{
+ StringValue(str2);
len = RSTRING(str2)->len;
memcpy( buf + skip, RSTRING(str2)->ptr, len );
}
@@ -821,9 +822,11 @@ syck_parser_bufsize_set( self, size )
{
SyckParser *parser;
- Data_Get_Struct(self, SyckParser, parser);
if ( rb_respond_to( size, s_to_i ) ) {
- parser->bufsize = NUM2INT(rb_funcall(size, s_to_i, 0));
+ int size = NUM2INT(rb_funcall(size, s_to_i, 0));
+
+ Data_Get_Struct(self, SyckParser, parser);
+ parser->bufsize = size;
}
return self;
}
@@ -856,10 +859,10 @@ syck_parser_load(argc, argv, self)
volatile VALUE hash; /* protect from GC */
rb_scan_args(argc, argv, "11", &port, &proc);
- Data_Get_Struct(self, SyckParser, parser);
input = rb_hash_aref( rb_attr_get( self, s_options ), sym_input );
model = rb_hash_aref( rb_attr_get( self, s_options ), sym_model );
+ Data_Get_Struct(self, SyckParser, parser);
syck_set_model( parser, input, model );
bonus.taint = syck_parser_assign_io(parser, port);
@@ -887,10 +890,10 @@ syck_parser_load_documents(argc, argv, self)
volatile VALUE hash;
rb_scan_args(argc, argv, "1&", &port, &proc);
- Data_Get_Struct(self, SyckParser, parser);
input = rb_hash_aref( rb_attr_get( self, s_options ), sym_input );
model = rb_hash_aref( rb_attr_get( self, s_options ), sym_model );
+ Data_Get_Struct(self, SyckParser, parser);
syck_set_model( parser, input, model );
bonus.taint = syck_parser_assign_io(parser, port);
@@ -1374,8 +1377,8 @@ syck_emitter_write_m( self, str )
{
SyckEmitter *emitter;
- Data_Get_Struct(self, SyckEmitter, emitter);
StringValue(str);
+ Data_Get_Struct(self, SyckEmitter, emitter);
syck_emitter_write( emitter, RSTRING(str)->ptr, RSTRING(str)->len );
return self;
}
@@ -1389,8 +1392,8 @@ syck_emitter_simple_write( self, str )
{
SyckEmitter *emitter;
- Data_Get_Struct(self, SyckEmitter, emitter);
StringValue(str);
+ Data_Get_Struct(self, SyckEmitter, emitter);
syck_emitter_simple( emitter, RSTRING(str)->ptr, RSTRING(str)->len );
return self;
}