[#7954] Doesn't build on Alpha — akira yamada / やまだあきら <akira@...>
8 messages
1999/10/02
[#7956] Re: Doesn't build on Alpha
— Shugo Maeda <shugo@...>
1999/10/02
前田@ruby-lang.org用のサーバ構築中です。
[#7968] array .{first, last, at} — Kazunori NISHI <kazunori@...>
西@九大です。
25 messages
1999/10/07
[#7969] Re: array .{first, last, at}
— nobu.nakada@...
1999/10/07
なかだです。
[#7983] Re: array .{first, last, at}
— Kazunori NISHI <kazunori@...>
1999/10/12
西@九大です。
[#7984] Re: array .{first, last, at}
— matz@... (Yukihiro Matsumoto)
1999/10/12
まつもと ゆきひろです
[#7985] [patch] Array#delete_at w/ minus value
— EGUCHI Osamu <eguchi@...>
1999/10/12
えぐち@エスアンドイーです。
[#8037] no bang method always returned unique?
— EGUCHI Osamu <eguchi@...>
1999/10/16
えぐち@エスアンドイーです。
[#8041] Re: no bang method always returned unique?
— matz@... (Yukihiro Matsumoto)
1999/10/16
まつもと ゆきひろです
[#8043] Re: no bang method always returned unique?
— EGUCHI Osamu <eguchi@...>
1999/10/17
えぐち@エスアンドイー です。
[#7991] Re: [patch] Array#delete_at w/ minus value
— matz@... (Yukihiro Matsumoto)
1999/10/13
まつもと ゆきひろです
[#7994] Re: [patch] Array#delete_at w/ minus value
— EGUCHI Osamu <eguchi@...>
1999/10/13
えぐち@エスアンドイー です。
[#7995] Re: [patch] Array#delete_at w/ minus value
— matz@... (Yukihiro Matsumoto)
1999/10/13
まつもと ゆきひろです
[#7996] Re: [patch] Array#delete_at w/ minus value
— EGUCHI Osamu <eguchi@...>
1999/10/13
えぐち@エスアンドイー です。
[#7997] Re: [patch] Array#delete_at w/ minus value
— matz@... (Yukihiro Matsumoto)
1999/10/13
まつもと ゆきひろです
[#7998] Re: [patch] Array#delete_at w/ minus value
— EGUCHI Osamu <eguchi@...>
1999/10/13
えぐち@エスアンドイー です。
[#7972] socket.c Socket::Constants SOL_TCP — WATANABE Tetsuya <tetsu@...>
渡辺哲也です。
5 messages
1999/10/10
[#7974] [CYGWIN] bug? system() and socket — Shin-ichiro Hara <sinara@...>
原です。
5 messages
1999/10/10
[#7990] socks5 — とみたまさひろ <tommy@...>
とみたです。
16 messages
1999/10/12
[#7992] Re: socks5
— matz@... (Yukihiro Matsumoto)
1999/10/13
まつもと ゆきひろです
[#8003] Re: socks5
— とみたまさひろ <tommy@...>
1999/10/13
とみたです。
[#8004] Re: socks5
— matz@... (Yukihiro Matsumoto)
1999/10/13
まつもと ゆきひろです
[#8014] Re: socks5
— とみたまさひろ <tommy@...>
1999/10/13
とみたです。
[#8026] Re: socks5
— matz@... (Yukihiro Matsumoto)
1999/10/15
まつもと ゆきひろです
[#7993] prime numbers at st.c — Kazuhiro Yoshida <moriq.kazuhiro@...>
もりきゅうです.
2 messages
1999/10/13
[#8005] signal.c in cvs — Masaki Fukushima <fukusima@...>
福嶋です。
6 messages
1999/10/13
[#8020] [PATCH] Win32API — WATANABE Hirofumi <eban@...>
わたなべです.
9 messages
1999/10/14
[#8033] rb_compile_string and rb_load_protect — Masaki Suketa <CQN02273@...>
助田です.
6 messages
1999/10/16
[#8036] Re: rb_compile_string and rb_load_protect
— matz@... (Yukihiro Matsumoto)
1999/10/16
まつもと ゆきひろです
[#8038] [patch] build on sunos4 w/ VPATH fail — EGUCHI Osamu <eguchi@...>
えぐち@エスアンドイー です。
7 messages
1999/10/16
[#8045] signal exception semantics — nobu.nakada@...
なかだです。
7 messages
1999/10/17
[#8048] non terminated string — Minero Aoki <aamine@...>
あおきです。
5 messages
1999/10/17
[#8051] error.c for latest cygwin — WATANABE Hirofumi <eban@...>
わたなべです.
11 messages
1999/10/17
[#8053] Re: error.c for latest cygwin
— matz@... (Yukihiro Matsumoto)
1999/10/18
まつもと ゆきひろです
[#8157] Re: error.c for latest cygwin
— Katsuyuki Komatsu <komatsu@...>
1999/11/01
小松です。
[#8060] Re: [ruby-list:17813] Re: Exception.html & Errno.html for ruby-man-1.4.2-jp — "NAKAMURA, Hiroshi" <nakahiro@...>
なひです.そろそろruby-dev?
4 messages
1999/10/19
[#8078] [patch] File.lchmod and File.lchown — EGUCHI Osamu <eguchi@...>
えぐち@エスアンドイーです。
7 messages
1999/10/20
[#8080] Re: [patch] File.lchmod and File.lchown
— matz@... (Yukihiro Matsumoto)
1999/10/21
まつもと ゆきひろです
[#8081] Re: [patch] File.lchmod and File.lchown
— EGUCHI Osamu <eguchi@...>
1999/10/21
えぐち@エスアンドイー です。
[#8082] Ruby 1.4.2 with Tcl/Tk 8.2 — akira yamada / やまだあきら <akira@...>
9 messages
1999/10/21
[#8129] Re: Ruby 1.4.2 with Tcl/Tk 8.2
— akira yamada / やまだあきら <akira@...>
1999/10/28
[#8090] Re: [ruby-list:17940] Enumerable#collect — Takashi Ikeda <cercine@...>
池田孝志です。
11 messages
1999/10/22
[#8097] Re: [ruby-list:17940] Enumerable#collect
— nobu.nakada@...
1999/10/23
なかだです。
[#8098] Re: [ruby-list:17940] Enumerable#collect
— Takashi Ikeda <cercine@...>
1999/10/23
池田孝志です。
[#8100] Re: [ruby-list:17940] Enumerable#collect
— EGUCHI Osamu <eguchi@...>
1999/10/23
えぐち@エスアンドイー です。
[#8106] Re: [ruby-list:17940] Enumerable#collect
— matz@... (Yukihiro Matsumoto)
1999/10/23
まつもと ゆきひろです
[#8091] named argument? — ttate@...
立石です。
7 messages
1999/10/22
[#8108] Re: [ruby-list:17963] Re: bug? system — ttate@...
立石です。
5 messages
1999/10/23
[#8137] multiple conditional switch — kjana@... (YANAGAWA Kazuhisa)
♪昨日手紙が.... じゃなくて (^^; 今日 ruby 本が届きました.どうもあり
8 messages
1999/10/29
[#8152] Ruby 1.5 (cvs) irb, cgi.rb — Wakou Aoyama <wakou@...>
青山です。
5 messages
1999/10/30
[ruby-dev:8015] [patch] Array modify check (Re: [patch] Array#delete_at w/ minus value)
From:
EGUCHI Osamu <eguchi@...>
Date:
1999-10-13 15:53:18 UTC
List:
ruby-dev #8015
えぐち@エスアンドイー です。
>>> In message [ruby-dev:7985] [patch] Array#delete_at w/ minus value
On Tue, 12 Oct 1999 13:00:39 +0900, EGUCHI Osamu <eguchi@cagiva.shizuokanet.ne.jp> said:
eguchi> えぐち@エスアンドイーです。
eguchi>
eguchi> 負のインデックスを Array の delete_at の引数に
eguchi> 使えるようにしてみました。
rb_ary_delete_at() の rb_ary_modify() の位置がまずかったです。
これだと、(インデクスが範囲外が理由の)変更未遂を
見逃してしまいます。
frozen, sort 中の lock それに taint は、
*変更を行わない場合* も検査すべきと解釈しました。
...合ってますか?
そういう目で見ると、
* Array#sort! で length <= 1 の時にも検査必要?
* Array#concat にも ?
? Array#clear には ???
あと、
* Array#sort が length == 0 の場合に限り、
dup した新しい配列を返さないで self を返している。
* 再帰の抑止、 rb_ary_plus() と rb_ary_concat()
というのに気がつきました。
#
いま Ruby で、ある種のアセンブラのオプティマイザ書いてますが、
Ruby の配列って欲しい機能が完備してるので、サクサク作れて快適☆
そのおかげで、このオプティマイザは Ruby の配列クラスの
テストプログラムと化してます(笑)。
えぐち
Index: array.c
===================================================================
RCS file: /usr/home/eguchi/cvs.netlab.co.jp//ruby/array.c,v
retrieving revision 1.3
diff -d -u -r1.3 array.c
--- array.c 1999/10/13 06:44:40 1.3
+++ array.c 1999/10/13 15:29:50
@@ -914,9 +914,9 @@
rb_ary_sort_bang(ary)
VALUE ary;
{
+ rb_ary_modify(ary);
if (RARRAY(ary)->len <= 1) return ary;
- rb_ary_modify(ary);
FL_SET(ary, ARY_TMPLOCK); /* prohibit modification during sort */
rb_ensure(sort_internal, ary, sort_unlock, ary);
return ary;
@@ -926,8 +926,9 @@
rb_ary_sort(ary)
VALUE ary;
{
+ ary = rb_ary_dup(ary);
if (RARRAY(ary)->len == 0) return ary;
- return rb_ary_sort_bang(rb_ary_dup(ary));
+ return rb_ary_sort_bang(ary);
}
VALUE
@@ -966,11 +967,11 @@
long i, pos = NUM2LONG(at), len = RARRAY(ary)->len;
VALUE del = Qnil;
+ rb_ary_modify(ary);
if (pos >= len) return Qnil;
if (pos < 0) pos += len;
if (pos < 0) return Qnil;
- rb_ary_modify(ary);
del = RARRAY(ary)->ptr[pos];
for (i = pos + 1; i < len; i++, pos++) {
RARRAY(ary)->ptr[pos] = RARRAY(ary)->ptr[i];
@@ -1090,7 +1091,7 @@
VALUE z;
if (TYPE(y) != T_ARRAY) {
- return rb_ary_plus(x, rb_Array(y));
+ y = rb_Array(y);
}
z = rb_ary_new2(RARRAY(x)->len + RARRAY(y)->len);
@@ -1106,8 +1107,9 @@
{
VALUE *p, *pend;
+ rb_ary_modify(x);
if (TYPE(y) != T_ARRAY) {
- return rb_ary_concat(x, rb_Array(y));
+ y = rb_Array(y);
}
p = RARRAY(y)->ptr;