summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog23
-rw-r--r--eval.c13
-rw-r--r--ext/socket/socket.c4
-rw-r--r--io.c2
-rw-r--r--object.c2
-rw-r--r--pack.c2
6 files changed, 31 insertions, 15 deletions
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 <matz@ruby-lang.org>
+
+ * 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 <matz@ruby-lang.org>
+
+ * 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 <akr@m17n.org>
* sample/exyacc.rb: use Regexp in gsub!.
+Sat Apr 5 23:41:28 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * pack.c (pack_pack): small but serious typo.
+
+Sat Apr 5 01:41:28 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (backtrace): skip internal allocator frame.
+ (ruby-bugs-ja PR#416)
+
Fri Apr 4 10:53:22 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
* 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;