diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | io.c | 13 | ||||
-rw-r--r-- | sprintf.c | 8 |
3 files changed, 20 insertions, 6 deletions
@@ -17,6 +17,11 @@ Thu Jul 27 18:12:12 2006 WATANABE Hirofumi <eban@ruby-lang.org> * time.c: need to declare time_utc_offset. +Thu Jul 27 17:01:01 2006 Yukihiro Matsumoto <matz@ruby-lang.org> + + * io.c (io_close): always calls "close" method of the receiver. + [ruby-core:6911] [ruby-core:8112] + Thu Jul 27 16:49:01 2006 Yukihiro Matsumoto <matz@ruby-lang.org> * time.c (time_to_s): use +0900 style timezone string for local time. @@ -2289,16 +2289,19 @@ rb_io_close_m(io) } static VALUE -io_close(io) +io_call_close(io) VALUE io; { - if (TYPE(io) == T_FILE) { - rb_io_close(io); - return Qnil; - } return rb_funcall(io, rb_intern("close"), 0, 0); } +static VALUE +io_close(io) + VALUE io; +{ + return rb_rescue(io_call_close, io, 0, 0); +} + /* * call-seq: * ios.closed? => true or false @@ -213,7 +213,12 @@ sign_bits(base, p) * s | Argument is a string to be substituted. If the format * | sequence contains a precision, at most that many characters * | will be copied. - * u | Treat argument as an unsigned decimal number. + * u | Treat argument as an unsigned decimal number. Negative integers + * | are displayed as a 32 bit two's complement plus one for the + * | underlying architecture; that is, 2 ** 32 + n. However, since + * | Ruby has no inherent limit on bits used to represent the + * | integer, this value is preceded by two dots (..) in order to + * | indicate a infinite number of leading sign bits. * X | Convert argument as a hexadecimal number using uppercase * | letters. Negative numbers will be displayed with two * | leading periods (representing an infinite string of @@ -230,6 +235,7 @@ sign_bits(base, p) * sprintf("%1$*2$s %2$d %1$s", "hello", 8) #=> " hello 8 hello" * sprintf("%1$*2$s %2$d", "hello", -8) #=> "hello -8" * sprintf("%+g:% g:%-g", 1.23, 1.23, 1.23) #=> "+1.23: 1.23:1.23" + * sprintf("%u", -123) #=> "..4294967173" */ VALUE |