diff --git a/ChangeLog b/ChangeLog index 052bd8f89e..000a317e43 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +Thu Dec 16 00:57:30 2004 Yukihiro Matsumoto + + * ext/syck/rubyext.c (rb_syck_io_str_read): [ruby-core:03973] + Thu Dec 16 00:43:29 2004 Masatoshi SEKI * lib/drb/drb.rb: changed default binded address family to use an @@ -20,6 +24,10 @@ Wed Dec 15 17:47:17 2004 GOTOU Yuuzou * lib/webrick/config.rb (WEBrick::Config::FileHandler): default value of :NondisclosureName is [".ht*", "*~"]. +Wed Dec 15 16:10:23 2004 Yukihiro Matsumoto + + * object.c (rb_obj_id_obsolete): warn always. + Wed Dec 15 15:31:02 2004 Yukihiro Matsumoto * lib/set.rb (Set#==): [ruby-dev:25206] 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; } diff --git a/lib/open3.rb b/lib/open3.rb index 407cd7662c..1ddd213f61 100644 --- a/lib/open3.rb +++ b/lib/open3.rb @@ -9,6 +9,13 @@ # or # include Open3 # stdin, stdout, stderr = popen3('nroff -man') +# +# popen3 can also take a block which will receive stdin, stdout and stderr +# as parameters. This ensures stdin, stdout and stderr are closed once +# the block exits. +# +# Such as +# Open3.popen3('nroff -man') { |stdin, stdout, stderr| ... } module Open3 #[stdin, stdout, stderr] = popen3(command); diff --git a/object.c b/object.c index 3d77c36a1b..308e1dc8d7 100644 --- a/object.c +++ b/object.c @@ -149,7 +149,7 @@ VALUE rb_obj_id_obsolete(obj) VALUE obj; { - rb_warning("Object#id will be deprecated; use Object#object_id"); + rb_warn("Object#id will be deprecated; use Object#object_id"); return rb_obj_id(obj); }