From 9a24232fd28baa60a4a460b2fc70a538b746bca0 Mon Sep 17 00:00:00 2001 From: matz Date: Mon, 15 Apr 2002 07:48:47 +0000 Subject: * pack.c (pack_unpack): should treat 'U' in character unit, not in byte unit. * error.c (exc_initialize): should clear backtrace information. * io.c (rb_io_fptr_cleanup): should close IO created by IO.new(fd). * rubyio.h: remove FMODE_FDOPEN git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2375 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 13 +++++++++++++ error.c | 1 + eval.c | 3 +-- ext/socket/socket.c | 1 - io.c | 8 +------- pack.c | 4 ++-- rubyio.h | 1 - 7 files changed, 18 insertions(+), 13 deletions(-) diff --git a/ChangeLog b/ChangeLog index 90d6f4e700..1115b50737 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,16 @@ +Mon Apr 15 09:27:31 2002 Yukihiro Matsumoto + + * pack.c (pack_unpack): should treat 'U' in character unit, not in + byte unit. + + * error.c (exc_initialize): should clear backtrace information. + +Sat Apr 13 23:42:43 2002 Yukihiro Matsumoto + + * io.c (rb_io_fptr_cleanup): should close IO created by IO.new(fd). + + * rubyio.h: remove FMODE_FDOPEN + Fri Apr 12 12:54:04 2002 NAKAMURA Usaku * win32/Makefile.sub: use missing/acosh.c. diff --git a/error.c b/error.c index edf0b16e2b..936079a659 100644 --- a/error.c +++ b/error.c @@ -309,6 +309,7 @@ exc_initialize(argc, argv, exc) StringValue(mesg); /* ensure mesg can be converted to String */ } rb_iv_set(exc, "mesg", mesg); + rb_iv_set(exc, "bt", Qnil); return exc; } diff --git a/eval.c b/eval.c index 82068f140f..0e8b5cc0bd 100644 --- a/eval.c +++ b/eval.c @@ -5049,14 +5049,13 @@ eval(self, src, scope, file, line) if (strcmp(file, "(eval)") == 0) { if (ruby_sourceline > 1) { errat = get_backtrace(ruby_errinfo); - err = RARRAY(errat)->ptr[0]; + err = rb_str_dup(RARRAY(errat)->ptr[0]); rb_str_cat2(err, ": "); rb_str_append(err, ruby_errinfo); } else { err = rb_str_dup(ruby_errinfo); } - errat = Qnil; rb_exc_raise(rb_funcall(ruby_errinfo, rb_intern("exception"), 1, err)); } rb_exc_raise(ruby_errinfo); diff --git a/ext/socket/socket.c b/ext/socket/socket.c index e2f1f0ce12..8373ce300b 100644 --- a/ext/socket/socket.c +++ b/ext/socket/socket.c @@ -202,7 +202,6 @@ bsock_s_for_fd(klass, fd) VALUE sock = init_sock(rb_obj_alloc(klass), NUM2INT(fd)); GetOpenFile(sock, fptr); - fptr->mode |= FMODE_FDOPEN; return sock; } diff --git a/io.c b/io.c index cb10187e2b..bc6724786a 100644 --- a/io.c +++ b/io.c @@ -1191,12 +1191,6 @@ rb_io_fptr_cleanup(fptr, fin) OpenFile *fptr; int fin; { - if (fptr->mode & FMODE_FDOPEN) { - if (fptr->mode & FMODE_WRITABLE) { - io_fflush(GetWriteFile(fptr), fptr); - } - return; - } if (fptr->finalize) { (*fptr->finalize)(fptr); } @@ -2621,7 +2615,7 @@ rb_io_initialize(argc, argv, io) #endif } MakeOpenFile(io, fp); - fp->mode = rb_io_modenum_flags(flags) | FMODE_FDOPEN; + fp->mode = rb_io_modenum_flags(flags); fp->f = rb_fdopen(fd, rb_io_modenum_mode(flags, mbuf)); return io; diff --git a/pack.c b/pack.c index 33870d28fc..b924c7418d 100644 --- a/pack.c +++ b/pack.c @@ -1468,11 +1468,11 @@ pack_unpack(str, fmt) case 'U': if (len > send - s) len = send - s; while (len > 0 && s < send) { - int alen = len; + int alen = send - s; unsigned long l; l = utf8_to_uv(s, &alen); - s += alen; len -= alen; + s += alen; len--; rb_ary_push(ary, rb_uint2inum(l)); } break; diff --git a/rubyio.h b/rubyio.h index 3599334f62..214128449f 100644 --- a/rubyio.h +++ b/rubyio.h @@ -32,7 +32,6 @@ typedef struct OpenFile { #define FMODE_BINMODE 4 #define FMODE_SYNC 8 #define FMODE_WBUF 16 -#define FMODE_FDOPEN 32 #define GetOpenFile(obj,fp) rb_io_check_closed((fp) = RFILE(rb_io_taint_check(obj))->fptr) -- cgit v1.2.3