[#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:24411] Re: Marshal.load dumps core
なかだです。
At Sun, 3 Oct 2004 00:00:05 +0900,
Tanaka Akira wrote in [ruby-dev:24404]:
>
> 次のようにすると core を吐きます。
>
> % ./ruby -e '
> class C
> def marshal_dump
> end
> def marshal_load(v)
> $s.replace ""
> end
> end
> o = [C.new, "a" * 0x20000]
> $s = Marshal.dump(o)
> p $s.length
> Marshal.load($s)
> '
これでどうでしょうか。
Index: marshal.c
===================================================================
RCS file: /cvs/ruby/src/ruby/marshal.c,v
retrieving revision 1.117
diff -U2 -p -d -r1.117 marshal.c
--- marshal.c 29 Sep 2004 05:15:33 -0000 1.117
+++ marshal.c 3 Oct 2004 17:08:04 -0000
@@ -780,5 +780,6 @@ marshal_dump(argc, argv)
struct load_arg {
- char *ptr, *end;
+ VALUE src;
+ long pos;
st_table *symbols;
VALUE data;
@@ -794,13 +795,13 @@ r_byte(arg)
{
int c;
+ VALUE src = arg->src;
- if (!arg->end) {
- VALUE src = (VALUE)arg->ptr;
+ if (arg->pos == -1L) {
VALUE v = rb_funcall2(src, s_getc, 0, 0);
if (NIL_P(v)) rb_eof_error();
c = (unsigned char)FIX2INT(v);
}
- else if (arg->ptr < arg->end) {
- c = *(unsigned char*)arg->ptr++;
+ else if (arg->pos < RSTRING(src)->len) {
+ c = (unsigned char)RSTRING(src)->ptr[arg->pos++];
}
else {
@@ -867,9 +868,8 @@ r_bytes0(len, arg)
struct load_arg *arg;
{
- VALUE str;
+ VALUE str, src = arg->src;
if (len == 0) return rb_str_new(0, 0);
- if (!arg->end) {
- VALUE src = (VALUE)arg->ptr;
+ if (arg->pos == -1L) {
VALUE n = LONG2NUM(len);
str = rb_funcall2(src, s_read, 1, &n);
@@ -880,10 +880,10 @@ r_bytes0(len, arg)
}
else {
- if (arg->ptr + len > arg->end) {
+ if (arg->pos + len > RSTRING(src)->len) {
too_short:
rb_raise(rb_eArgError, "marshal data too short");
}
- str = rb_str_new(arg->ptr, len);
- arg->ptr += len;
+ str = rb_str_new(RSTRING(src)->ptr + arg->pos, len);
+ arg->pos += len;
}
return str;
@@ -1389,9 +1389,9 @@ marshal_load(argc, argv)
rb_scan_args(argc, argv, "11", &port, &proc);
+ arg.src = port;
if (rb_respond_to(port, rb_intern("to_str"))) {
arg.taint = OBJ_TAINTED(port); /* original taintedness */
- StringValue(port); /* possible conversion */
- arg.ptr = RSTRING(port)->ptr;
- arg.end = arg.ptr + RSTRING(port)->len;
+ StringValue(arg.src); /* possible conversion */
+ arg.pos = 0L;
}
else if (rb_respond_to(port, s_getc) && rb_respond_to(port, s_read)) {
@@ -1400,6 +1400,5 @@ marshal_load(argc, argv)
}
arg.taint = Qtrue;
- arg.ptr = (char *)port;
- arg.end = 0;
+ arg.pos = -1L;
}
else {
--
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
中田 伸悦