diff --git a/ChangeLog b/ChangeLog index 49fc41556a..ccf502c25e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,7 +1,30 @@ +Mon Apr 7 15:49:09 2003 Yukihiro Matsumoto + + * ext/socket/socket.c (sock_s_unpack_sockaddr_in): remove struct + size check. getnameinfo(3) can handle. [ruby-dev:19967] + +Mon Apr 7 01:33:31 2003 Yukihiro Matsumoto + + * io.c (io_read): do not call rb_sys_fail() when required data + length is zero. (ruby-bugs-ja PR#420) + + * eval.c (umethod_proc): should raise TypeError, instead of + returning error causing Proc. Following the principle of "fail + early". [ruby-core:00927] + Sun Apr 6 00:35:37 2003 Tanaka Akira * sample/exyacc.rb: use Regexp in gsub!. +Sat Apr 5 23:41:28 2003 Yukihiro Matsumoto + + * pack.c (pack_pack): small but serious typo. + +Sat Apr 5 01:41:28 2003 Yukihiro Matsumoto + + * eval.c (backtrace): skip internal allocator frame. + (ruby-bugs-ja PR#416) + Fri Apr 4 10:53:22 2003 Yukihiro Matsumoto * eval.c (assign): should prepare mrhs by svalue_to_mrhs(). diff --git a/eval.c b/eval.c index 90f91408ad..9b4420d7af 100644 --- a/eval.c +++ b/eval.c @@ -5087,6 +5087,9 @@ backtrace(lev) NODE *n; ary = rb_ary_new(); + if (frame->last_func == ID_ALLOCATOR) { + frame = frame->prev; + } if (lev < 0) { ruby_set_current_source(); if (frame->last_func) { @@ -7317,13 +7320,6 @@ bmcall(args, method) return method_call(RARRAY(a)->len, RARRAY(a)->ptr, method); } -static VALUE -umcall(args, method) - VALUE args, method; -{ - return method_call(0, 0, method); -} - VALUE rb_proc_new(func, val) VALUE (*func)(ANYARGS); /* VALUE yieldarg[, VALUE procarg] */ @@ -7343,7 +7339,8 @@ static VALUE umethod_proc(method) VALUE method; { - return rb_iterate((VALUE(*)_((VALUE)))mproc, method, umcall, method); + rb_raise(rb_eTypeError, "unbound method cannot be executed; bind first"); + return Qnil; /* not reached */ } static VALUE diff --git a/ext/socket/socket.c b/ext/socket/socket.c index 6cdedd22e0..14fbe6feb6 100644 --- a/ext/socket/socket.c +++ b/ext/socket/socket.c @@ -2328,10 +2328,6 @@ sock_s_unpack_sockaddr_in(self, addr) VALUE host; sockaddr = (struct sockaddr_in*)StringValuePtr(addr); - if (RSTRING(addr)->len != sizeof(struct sockaddr_in)) { - rb_raise(rb_eTypeError, "sockaddr_in size differs - %ld required; %d given", - RSTRING(addr)->len, sizeof(struct sockaddr_in)); - } host = mkipaddr((struct sockaddr*)sockaddr); OBJ_INFECT(host, addr); return rb_assoc_new(INT2NUM(ntohs(sockaddr->sin_port)), host); diff --git a/io.c b/io.c index e9a4ced2c0..5024b75d26 100644 --- a/io.c +++ b/io.c @@ -836,7 +836,7 @@ io_read(argc, argv, io) if (n == 0) { rb_str_resize(str,0); if (feof(fptr->f)) return Qnil; - rb_sys_fail(fptr->path); + if (len > 0) rb_sys_fail(fptr->path); } RSTRING(str)->len = n; RSTRING(str)->ptr[n] = '\0'; diff --git a/object.c b/object.c index 69e99f60b0..ce43886348 100644 --- a/object.c +++ b/object.c @@ -740,7 +740,7 @@ rb_class_allocate_instance(klass) if (FL_TEST(klass, FL_SINGLETON)) { rb_raise(rb_eTypeError, "can't create instance of virtual class"); } - { + else { NEWOBJ(obj, struct RObject); OBJSETUP(obj, klass, T_OBJECT); return (VALUE)obj; diff --git a/pack.c b/pack.c index 000c6e5ca9..58aa5d4105 100644 --- a/pack.c +++ b/pack.c @@ -550,7 +550,7 @@ pack_pack(ary, fmt) char c = byte & 0xff; rb_str_buf_cat(res, &c, 1); } - len = 1; + len = j; goto grow; } break;