[#26664] refactoring tcltklib.c (deleted ip check) — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>

山本です。

22 messages 2005/08/01
[#26665] Re: refactoring tcltklib.c (deleted ip check) — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2005/08/01

山本です。

[#26668] Re: refactoring tcltklib.c (deleted ip check) — Hidetoshi NAGAI <nagai@...> 2005/08/01

永井@知能.九工大です.

[#26678] Re: refactoring tcltklib.c (deleted ip check) — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2005/08/01

山本です。

[#26684] Re: refactoring tcltklib.c (deleted ip check) — Hidetoshi NAGAI <nagai@...> 2005/08/01

永井@知能.九工大です.

[#26686] Re: refactoring tcltklib.c (deleted ip check) — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2005/08/01

山本です。

[#26817] test/socket/test_tcp.rb freeze on windows — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>

山本です。

12 messages 2005/08/18

[#26829] cannot check EOF of pipe on windows — "U.Nakamura" <usa@...>

こんにちは、なかむら(う)です。

19 messages 2005/08/19
[#26830] Re: cannot check EOF of pipe on windows — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2005/08/19

山本です。

[#26831] Re: cannot check EOF of pipe on windows — "U.Nakamura" <usa@...> 2005/08/19

こんにちは、なかむら(う)です。

[#26832] Re: cannot check EOF of pipe on windows — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2005/08/19

山本です。

[#26836] Re: cannot check EOF of pipe on windows — nobuyoshi nakada <nobuyoshi.nakada@...> 2005/08/19

なかだです。

[#26872] irb -I/ruby -Iと$LOAD_PATH — akira yamada / やまだあきら <akira@...>

Debianユーザからruby -Iとirb -Iで

17 messages 2005/08/24
[#26873] Re: irb -I/ruby -Iと$LOAD_PATH — nobuyoshi nakada <nobuyoshi.nakada@...> 2005/08/24

なかだです。

[#26875] Re: irb -I/ruby -Iと$LOAD_PATH — akira yamada / やまだあきら <akira@...> 2005/08/24

nobuyoshi nakada wrote:

[#26885] Re: irb -I/ruby -Iと$LOAD_PATH — keiju@... (石塚圭樹) 2005/08/26

けいじゅ@いしつかです.

[#26897] fail on make install — KIMURA Koichi <kimura.koichi@...>

木村です。

28 messages 2005/08/29
[#26898] Re: fail on make install — "U.Nakamura" <usa@...> 2005/08/29

こんにちは、なかむら(う)です。

[#26903] Re: fail on make install — KIMURA Koichi <kbk@...> 2005/08/29

木村です。

[#26922] Re: fail on make install — KIMURA Koichi <kimura.koichi@...> 2005/08/30

木村です。

[#26926] Re: fail on make install — KIMURA Koichi <kimura.koichi@...> 2005/08/31

木村です。

[#26927] Re: fail on make install — "U.Nakamura" <usa@...> 2005/08/31

こんにちは、なかむら(う)です。

[#26928] Re: fail on make install — KIMURA Koichi <kimura.koichi@...> 2005/08/31

木村です。

[#26929] Re: fail on make install — "U.Nakamura" <usa@...> 2005/08/31

こんにちは、なかむら(う)です。

[#26930] Re: fail on make install — nobuyoshi nakada <nobuyoshi.nakada@...> 2005/08/31

なかだです。

[#26931] Re: fail on make install — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2005/08/31

山本です。

[#26933] Re: fail on make install — nobu@... 2005/08/31

なかだです。

[#26938] Re: fail on make install — nobuyoshi nakada <nobuyoshi.nakada@...> 2005/09/01

なかだです。

[#26939] Re: fail on make install — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2005/09/01

山本です。

[#26900] multiplying empty string — nobuyoshi nakada <nobuyoshi.nakada@...>

19 messages 2005/08/29
[#26904] Re: multiplying empty string — Yukihiro Matsumoto <matz@...> 2005/08/29

まつもと ゆきひろです

[#26907] Re: multiplying empty string — Tanaka Akira <akr@...17n.org> 2005/08/29

In article <1125327516.070646.12845.nullmailer@x31.priv.netlab.jp>,

[#26909] Re: multiplying empty string — Yukihiro Matsumoto <matz@...> 2005/08/29

まつもと ゆきひろです

[ruby-dev:26910] Re: multiplying empty string

From: "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
Date: 2005-08-30 00:03:48 UTC
List: ruby-dev #26910
山本です。

>|以前、[ruby-dev:19980] で話が出た時には、"" * -1 などがエラーでなくな
>|るのを気にする人がいたようです。

思いつきですが、s * -2 は s.reverse * 2 とするのはどうでしょうか。

# 数学的にも、負の掛け算は数直線上で反転を意味するのでしっくり来ます。

Index: array.c
===================================================================
RCS file: /src/ruby/array.c,v
retrieving revision 1.175
diff -u -w -b -p -r1.175 array.c
--- array.c	10 Aug 2005 01:39:24 -0000	1.175
+++ array.c	29 Aug 2005 23:59:38 -0000
@@ -2399,6 +2399,7 @@ rb_ary_times(ary, times)
 {
     VALUE ary2, tmp;
     long i, len;
+    int negative;
 
     tmp = rb_check_string_type(times);
     if (!NIL_P(tmp)) {
@@ -2406,10 +2407,9 @@ rb_ary_times(ary, times)
     }
 
     len = NUM2LONG(times);
-    if (len == 0) return ary_new(rb_obj_class(ary), 0);
-    if (len < 0) {
-	rb_raise(rb_eArgError, "negative argument");
-    }
+    if (negative = (len < 0)) len = -len;
+
+    if (len == 0 || RARRAY(ary)->len == 0) return ary_new(rb_obj_class(ary), 0);
     if (LONG_MAX/len < RARRAY(ary)->len) {
 	rb_raise(rb_eArgError, "argument too big");
     }
@@ -2421,6 +2421,7 @@ rb_ary_times(ary, times)
     for (i=0; i<len; i+=RARRAY(ary)->len) {
 	MEMCPY(RARRAY(ary2)->ptr+i, RARRAY(ary)->ptr, VALUE, RARRAY(ary)->len);
     }
+    if (negative) rb_ary_reverse_bang(ary2);
     OBJ_INFECT(ary2, ary);
 
     return ary2;
Index: string.c
===================================================================
RCS file: /src/ruby/string.c,v
retrieving revision 1.231
diff -u -w -b -p -r1.231 string.c
--- string.c	23 Jul 2005 01:02:10 -0000	1.231
+++ string.c	29 Aug 2005 23:59:47 -0000
@@ -400,6 +400,8 @@ rb_str_plus(str1, str2)
  *     "Ho! " * 3   #=> "Ho! Ho! Ho! "
  */
 
+static VALUE rb_str_reverse_bang(VALUE);
+
 VALUE
 rb_str_times(str, times)
     VALUE str;
@@ -407,12 +409,12 @@ rb_str_times(str, times)
 {
     VALUE str2;
     long i, len;
+    int negative;
 
     len = NUM2LONG(times);
-    if (len == 0) return rb_str_new5(str,0,0);
-    if (len < 0) {
-	rb_raise(rb_eArgError, "negative argument");
-    }
+    if (negative = (len < 0)) len = -len;
+
+    if (len == 0 || RSTRING(str)->len == 0) return rb_str_new5(str,0,0);
     if (LONG_MAX/len <  RSTRING(str)->len) {
 	rb_raise(rb_eArgError, "argument too big");
     }
@@ -424,6 +426,8 @@ rb_str_times(str, times)
     }
     RSTRING(str2)->ptr[RSTRING(str2)->len] = '\0';
 
+    if (negative) rb_str_reverse_bang(str2);
+
     OBJ_INFECT(str2, str);
 
     return str2;


In This Thread