[#24395] "a".sum(32) is 0 — Tanaka Akira <akr@...17n.org>
次のように、"a".sum(32) が 0 になるのは変ではないでしょうか。
まつもと ゆきひろです
In article <1096716505.531808.29662.nullmailer@x31.priv.netlab.jp>,
[#24400] IO#read with 1 argument dumps core — Tanaka Akira <akr@...17n.org>
次のようにすると core を吐きます。
[#24405] Auto stack growing on Mac OS X — Mitsuhiro Kondo <miche@...>
近藤と申します。
[#24413] Re: new NKF2拡張ライブラリ — "NARUSE, Yui" <naruse@...>
naruseです。
[#24444] ARGF.read(len) and EOF — Tanaka Akira <akr@...17n.org>
次のように、ARGF.read(len) から読み込もうとしたときに、引数にファイル
In article <1097228154.590547.23205.nullmailer@x31.priv.netlab.jp>,
[#24464] DelegateClass#clone — pegacorn@...
こんにちは。
From: pegacorn@jcom.home.ne.jp
まつもと ゆきひろです
From: Yukihiro Matsumoto <matz@ruby-lang.org>
[#24467] DBM#select: `select': wrong argument type false (expected Data) (TypeError) — Tanaka Akira <akr@...17n.org>
DBM#select を呼び出すと `select': wrong argument type false (expected
[#24481] can't build ruby 1.9.0 on mswin32 — 木村浩一 <kimura.koichi@...>
木村です。
わたなべです。
[#24493] Init_stack prototype — Tanaka Akira <akr@...17n.org>
eval.c 内で Init_stack が
[#24505] File::open and mode 'w+' — sheepman <sheepman@...>
こんにちは、sheepman です。
[#24507] test_truncate_rbuf fails — "URABE Shyouhei aka.mput" <root@...>
mput です。 make test-all で以下のエラーが出ています。
In article <80041A7C-2022-11D9-9FB0-000393735AAE@mput.dip.jp>,
なかだです。
In article <200410172227.i9HMRGnh016104@sharui.nakada.niregi.kanuma.tochigi.jp>,
[#24515] Marshal.load causes core dump — Tanaka Akira <akr@...17n.org>
次のようにすると core を吐きます。
[#24519] raise dumps core — Tanaka Akira <akr@...17n.org>
次のようにすると core を吐きます。
[#24536] 「Rubyの落し方」 v.s. ruby_1_8 — akira yamada / やまだあきら <akira@...>
<URL:http://jp.rubyist.net/magazine/?0002-RubyCore>
なかだです。
まつもと ゆきひろです
2004-10-20 (水) の 21:38 +0900 に Yukihiro Matsumoto さんは書きました:
2004-10-26 (火) の 16:16 +0900 に akira yamada / やまだあきら さんは書きました:
まつもと ゆきひろです
こんにちは、なかむら(う)です。
まつもと ゆきひろです
こんにちは、なかむら(う)です。
まつもと ゆきひろです
こんにちは、なかむら(う)です。
2004-10-27 (水) の 11:48 +0900 に Yukihiro Matsumoto さんは書きました:
2004-10-27 (水) の 12:42 +0900 に akira yamada / やまだあきら さんは書きました:
In article <1098888819.9446.14.camel@rice.p.arika.org>,
2004-10-29 (金) の 11:30 +0900 に Tanaka Akira さんは書きました:
まつもと ゆきひろです
永井@知能.九工大です.
[#24537] No warning when using alias with exsisting method name — SASADA Koichi <ko1@...>
ささだです。
[#24540] IO#readpartial dumps core — Tanaka Akira <akr@...17n.org>
次のようにすると core を吐きます。
まつもと ゆきひろです
[#24594] unpack("p") dumps core — Tanaka Akira <akr@...17n.org>
次のようにすると core を吐きます。
[#24595] NKF(nkf2)をCVS Headに入れます — "NARUSE, Yui" <naruse@...>
naruseです。
[#24621] Zlib::Deflate#flush_next_in causes core dump on 1.8 — Tanaka Akira <akr@...17n.org>
次のようにすると core を吐きます。
[#24647] Re: oniguruma: big regexp dumps core — "K.Kosako" <kosako@...>
> 次のようにすると core を吐きます。
In article <20041030082637.6A78A33BFF@beryllium.ruby-lang.org>,
まつもと ゆきひろです
斉藤です。CVS の変更以来、鬼車はそう急がないだろうと
[ruby-dev:24459] Re: open dumps core again
なかだです。
At Fri, 8 Oct 2004 23:59:38 +0900,
Tanaka Akira wrote in [ruby-dev:24454]:
> 次のようにすると core を吐きます。
>
> % ./ruby -e '
> mode = "r" + "\0"*0x20000
> n = 0
> str = Object.new
> class << str; self end.send(:define_method, :to_str) {
> n += 1
> mode.replace "" if n == 2
> "|echo a"
> }
> p open(str, mode).read'
modenumを渡すようにしてみました。
Index: io.c
===================================================================
RCS file: /cvs/ruby/src/ruby/io.c,v
retrieving revision 1.301
diff -U2 -p -d -r1.301 io.c
--- io.c 7 Oct 2004 05:54:28 -0000 1.301
+++ io.c 9 Oct 2004 03:57:41 -0000
@@ -2542,10 +2542,11 @@ static VALUE
rb_file_open_internal(io, fname, mode)
VALUE io;
- const char *fname, *mode;
+ const char *fname;
+ int mode;
{
OpenFile *fptr;
MakeOpenFile(io, fptr);
- fptr->mode = rb_io_mode_flags(mode);
+ fptr->mode = rb_io_modenum_flags(mode);
fptr->path = strdup(fname);
fptr->f = rb_fopen(fptr->path, rb_io_flags_mode(fptr->mode));
@@ -2558,5 +2559,6 @@ rb_file_open(fname, mode)
const char *fname, *mode;
{
- return rb_file_open_internal(io_alloc(rb_cFile), fname, mode);
+ return rb_file_open_internal(io_alloc(rb_cFile), fname,
+ rb_io_mode_modenum(mode));
}
@@ -2732,10 +2734,11 @@ popen_exec(p)
static VALUE
-pipe_open(argc, argv, pname, mode)
+pipe_open(argc, argv, pname, openmode)
int argc;
VALUE *argv;
- char *pname, *mode;
+ char *pname;
+ int openmode;
{
- int modef = rb_io_mode_flags(mode);
+ int modef = rb_io_modenum_flags(openmode);
int pid = 0;
OpenFile *fptr;
@@ -2747,5 +2750,4 @@ pipe_open(argc, argv, pname, mode)
#elif defined(_WIN32)
FILE *fpr, *fpw;
- int openmode = rb_io_mode_modenum(mode);
char *prog = NULL;
#endif
@@ -2838,5 +2840,5 @@ pipe_open(argc, argv, pname, mode)
cmd = StringValuePtr(arg0);
}
- fpr = popen(cmd, mode);
+ fpr = popen(cmd, rb_io_modenum_mode(mode));
if (!fpr) rb_sys_fail(pname);
@@ -2871,15 +2873,15 @@ rb_io_popen(str, argc, argv, klass)
VALUE klass;
{
- char *mode;
+ int mode;
VALUE pname, pmode, port;
if (rb_scan_args(argc, argv, "11", &pname, &pmode) == 1) {
- mode = "r";
+ mode = O_RDONLY;
}
else if (FIXNUM_P(pmode)) {
- mode = rb_io_modenum_mode(FIX2INT(pmode));
+ mode = FIX2INT(pmode);
}
else {
- mode = StringValuePtr(pmode);
+ mode = rb_io_mode_modenum(StringValuePtr(pmode));
}
SafeStringValue(pname);
@@ -2957,18 +2959,15 @@ rb_io_s_popen(argc, argv, klass)
VALUE klass;
{
- char *mode;
+ int mode;
VALUE pname, pmode, port, tmp;
- char mbuf[MODENUM_MAX];
if (rb_scan_args(argc, argv, "11", &pname, &pmode) == 1) {
- mode = "r";
+ mode = O_RDONLY;
}
else if (FIXNUM_P(pmode)) {
- mode = rb_io_modenum_mode(FIX2INT(pmode));
+ mode = FIX2INT(pmode);
}
else {
- strncpy(mbuf, StringValuePtr(pmode), sizeof(mbuf) - 1);
- mbuf[sizeof(mbuf) - 1] = 0;
- mode = mbuf;
+ mode = rb_io_mode_modenum(StringValuePtr(pmode));
}
tmp = rb_check_array_type(pname);
@@ -3008,5 +3007,4 @@ rb_open_file(argc, argv, io)
{
VALUE fname, vmode, perm;
- char *mode;
int flags, fmode;
@@ -3014,19 +3012,20 @@ rb_open_file(argc, argv, io)
FilePathValue(fname);
+ if (NIL_P(vmode)) {
+ flags = O_RDONLY;
+ }
+ else if (FIXNUM_P(vmode)) {
+ flags = FIX2INT(vmode);
+ }
+ else {
+ SafeStringValue(vmode);
+ flags = rb_io_mode_modenum(RSTRING(vmode)->ptr);
+ }
if (FIXNUM_P(vmode) || !NIL_P(perm)) {
- if (FIXNUM_P(vmode)) {
- flags = FIX2INT(vmode);
- }
- else {
- SafeStringValue(vmode);
- flags = rb_io_mode_modenum(RSTRING(vmode)->ptr);
- }
fmode = NIL_P(perm) ? 0666 : NUM2INT(perm);
-
rb_file_sysopen_internal(io, RSTRING(fname)->ptr, flags, fmode);
}
else {
- mode = NIL_P(vmode) ? "r" : StringValuePtr(vmode);
- rb_file_open_internal(io, RSTRING(fname)->ptr, mode);
+ rb_file_open_internal(io, RSTRING(fname)->ptr, flags);
}
return io;
@@ -3211,5 +3210,6 @@ rb_f_open(argc, argv)
static VALUE
rb_io_open(fname, mode)
- char *fname, *mode;
+ char *fname;
+ int mode;
{
if (fname[0] == '|') {
@@ -3217,5 +3217,5 @@ rb_io_open(fname, mode)
}
else {
- return rb_file_open(fname, mode);
+ return rb_file_open(fname, rb_io_modenum_mode(mode));
}
}
@@ -4178,5 +4178,5 @@ next_argv()
str = rb_str_new2(fn);
#ifdef NO_LONG_FNAME
- ruby_add_suffix(str, ruby_inplace_mode);
+ ruby_add_suffix(str, ruby_inplace_mode);
#else
rb_str_cat2(str, ruby_inplace_mode);
@@ -4439,5 +4439,5 @@ rb_f_backquote(obj, str)
SafeStringValue(str);
- port = pipe_open(0, 0, RSTRING(str)->ptr, "r");
+ port = pipe_open(0, 0, RSTRING(str)->ptr, O_RDONLY);
if (NIL_P(port)) return rb_str_new(0,0);
@@ -5010,5 +5010,5 @@ rb_io_s_foreach(argc, argv)
arg.sep = rb_default_rs;
}
- io = rb_io_open(RSTRING(fname)->ptr, "r");
+ io = rb_io_open(RSTRING(fname)->ptr, O_RDONLY);
if (NIL_P(io)) return Qnil;
GetOpenFile(io, fptr);
@@ -5050,5 +5050,5 @@ rb_io_s_readlines(argc, argv, io)
FilePathValue(fname);
arg.argc = argc - 1;
- arg.io = rb_io_open(RSTRING(fname)->ptr, "r");
+ arg.io = rb_io_open(RSTRING(fname)->ptr, O_RDONLY);
if (NIL_P(arg.io)) return Qnil;
return rb_ensure(io_s_readlines, (VALUE)&arg, rb_io_close, arg.io);
@@ -5087,5 +5087,5 @@ rb_io_s_read(argc, argv, io)
FilePathValue(fname);
arg.argc = argc ? 1 : 0;
- arg.io = rb_io_open(RSTRING(fname)->ptr, "r");
+ arg.io = rb_io_open(RSTRING(fname)->ptr, O_RDONLY);
if (NIL_P(arg.io)) return Qnil;
if (!NIL_P(offset)) {
--
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
中田 伸悦