[#7300] resolver を呼ばない UDPsocket#recvfrom — Toshihiko SHIMOKAWA / 下川俊彦 <toshi@...>

あんまり ruby-dev な話でも無いのですが、ちょっとした機能拡張の提案なので、

12 messages 1999/07/12
[#7321] Re: resolver を呼ばない UDPsocket#recvfrom — Toshihiko SHIMOKAWA / 下川俊彦 <toshi@...> 1999/07/15

From: Toshihiko SHIMOKAWA / 下川俊彦 <toshi@csce.kyushu-u.ac.jp>

[#7313] Ruby 1.3.5 — Yukihiro Matsumoto <matz@...>

Ruby 1.3.5 is out, check out:

59 messages 1999/07/15
[#7318] Re: Ruby 1.3.5 — WATANABE Hirofumi <watanabe@...> 1999/07/15

わたなべです.

[#7326] Re: Ruby 1.3.5 — Wakou Aoyama <wakou@...> 1999/07/15

青山です。

[#7331] Re: Ruby 1.3.5 — matz@... (Yukihiro Matsumoto) 1999/07/16

まつもと ゆきひろです

[#7340] Re: Ruby 1.3.5 — Wakou Aoyama <wakou@...> 1999/07/16

青山です。

[#7368] Re: Ruby 1.3.5 — matz@... (Yukihiro Matsumoto) 1999/07/19

まつもと ゆきひろです

[#7373] Re: Ruby 1.3.5 — Shin-ichiro Hara <sinara@...> 1999/07/19

原です。

[#7374] Re: Ruby 1.3.5 — matz@... (Yukihiro Matsumoto) 1999/07/19

まつもと ゆきひろです

[#7382] Re: Ruby 1.3.5 — Wakou Aoyama <wakou@...> 1999/07/19

青山です。

[#7386] Re: Ruby 1.3.5 — matz@... (Yukihiro Matsumoto) 1999/07/21

まつもと ゆきひろです

[#7388] Re: Ruby 1.3.5 — Wakou Aoyama <wakou@...> 1999/07/21

青山です。

[#7387] [PATCH]extconf.rb, tcltklib.c, and rubytest.rb for NetBSD — Ryo HAYASAKA <hayasaka@...21.u-aizu.ac.jp>

早坂@会津大学です。

10 messages 1999/07/21

[#7466] [PATCH] for djgpp — WATANABE Hirofumi <watanabe@...>

わたなべです.

21 messages 1999/07/29
[#7467] Re: [PATCH] for djgpp — Katsuyuki Komatsu <komatsu@...> 1999/07/29

小松です。

[ruby-dev:7334] Re: [ruby-list:15459] Re: chomp で nil が返るのは?

From: Koji Arai <JCA02266@...>
Date: 1999-07-16 02:35:42 UTC
List: ruby-dev #7334
新井です。

# ruby-list から移動しました

>>> From: Koji Arai <JCA02266@nifty.ne.jp>
>>> Date: 15 Jul 1999 22:40:05 +0900
>>> Subject: [ruby-list:15459] Re: chompで nil が返るのは?

> 新井です。

> > なぜか以前の仕様に戻してますね.
> > 1.2.6 や 1.3.4-990531 あたりからそうなってるみたい.
> > 基本的にはドキュメントのほうが正しいはずです.
> 
> なるほど、だから今までハマらなかったんですね。
> では、1.3系のバージョンアップを待ってます。

待ちきれませんでした (^^;

確認用のスクリプトと1.3.4-990625へのパッチを添付し
てます。既にまつもとさんの方で修正しているようなら
確認用のスクリプトも使ってみてください。

squeezeに些細なバグがあったのでこれもfixしてます。

# あっ1.3.5って出てたんですね。取って来なきゃ


#!/usr/local/bin/ruby
def warn
  puts "Warning at #{caller}"
end

$_ = "a"
$_.id == gsub(/b/, "").id	and warn
$_.id == sub(/b/, "").id	and warn

$_ = ""

$_.id == chop.id		and warn
$_.id == chomp.id		and warn

s = "a"

s.id == s.gsub(/b/, "").id	and warn
s.id == s.sub(/b/, "").id	and warn

s.id == s.downcase.id		and warn

s = "A"
s.id == s.upcase.id		and warn
s.id == s.capitalize.id		and warn

s = "!"

s.id == s.swapcase.id		and warn
s.id == s.tr("a", "b").id	and warn
s.id == s.delete("a").id	and warn
s.id == s.squeeze("a").id	and warn

# squeeze! が nil を返さない(ver 1.2.6)
s.squeeze!("a")			and warn

# squeeze! が 先頭の \xff を削除する(ver 1.2.6、1.3.4-990625)
"\xff".squeeze!("\xff")		and warn

s.id == s.tr_s("a", "b").id	and warn

s = ""

s.id == s.chop.id		and warn
s.id == s.chomp.id		and warn
s.id == s.strip.id		and warn
s.id == s.reverse.id		and warn

__END__

--- string.c.org	Tue Jul 13 23:41:16 1999
+++ string.c	Fri Jul 16 01:37:50 1999
@@ -1031,7 +1031,7 @@ rb_str_sub(argc, argv, str)
     VALUE *argv;
     VALUE str;
 {
-    VALUE val = rb_str_sub_bang(argc, argv, rb_str_dup(str));
+    VALUE val = rb_str_sub_bang(argc, argv, str = rb_str_dup(str));
 
     if (NIL_P(val)) return str;
     return val;
@@ -1138,7 +1138,7 @@ rb_str_gsub(argc, argv, str)
     VALUE *argv;
     VALUE str;
 {
-    VALUE val = rb_str_gsub_bang(argc, argv, rb_str_dup(str));
+    VALUE val = rb_str_gsub_bang(argc, argv, str = rb_str_dup(str));
 
     if (NIL_P(val)) return str;
     return val;
@@ -1185,8 +1185,8 @@ rb_f_sub(argc, argv)
 {
     VALUE line, v;
 
-    line = uscore_get();
-    v = rb_str_sub_bang(argc, argv, rb_str_dup(line));
+    line = rb_str_dup(uscore_get());
+    v = rb_str_sub_bang(argc, argv, line);
     if (NIL_P(v)) return line;
     rb_lastline_set(v);
     return v;
@@ -1207,8 +1207,8 @@ rb_f_gsub(argc, argv)
 {
     VALUE line, v;
 
-    line = uscore_get();
-    v = rb_str_gsub_bang(argc, argv, rb_str_dup(line));
+    line = rb_str_dup(uscore_get());
+    v = rb_str_gsub_bang(argc, argv, line);
     if (NIL_P(v)) return line;
     rb_lastline_set(v);
     return v;
@@ -1239,7 +1239,7 @@ rb_str_reverse(str)
     VALUE obj;
     char *s, *e, *p;
 
-    if (RSTRING(str)->len <= 1) return str;
+    if (RSTRING(str)->len <= 1) return rb_str_dup(str);
 
     obj = rb_str_new(0, RSTRING(str)->len);
     s = RSTRING(str)->ptr; e = s + RSTRING(str)->len - 1;
@@ -1512,7 +1512,7 @@ static VALUE
 rb_str_upcase(str)
     VALUE str;
 {
-    VALUE val = rb_str_upcase_bang(rb_str_dup(str));
+    VALUE val = rb_str_upcase_bang(str = rb_str_dup(str));
 
     if (NIL_P(val)) return str;
     return val;
@@ -1546,7 +1546,7 @@ static VALUE
 rb_str_downcase(str)
     VALUE str;
 {
-    VALUE val = rb_str_downcase_bang(rb_str_dup(str));
+    VALUE val = rb_str_downcase_bang(str = rb_str_dup(str));
 
     if (NIL_P(val)) return str;
     return val;
@@ -1582,7 +1582,7 @@ static VALUE
 rb_str_capitalize(str)
     VALUE str;
 {
-    VALUE val = rb_str_capitalize_bang(rb_str_dup(str));
+    VALUE val = rb_str_capitalize_bang(str = rb_str_dup(str));
 
     if (NIL_P(val)) return str;
     return val;
@@ -1620,7 +1620,7 @@ static VALUE
 rb_str_swapcase(str)
     VALUE str;
 {
-    VALUE val = rb_str_swapcase_bang(rb_str_dup(str));
+    VALUE val = rb_str_swapcase_bang(str = rb_str_dup(str));
 
     if (NIL_P(val)) return str;
     return val;
@@ -1771,7 +1771,7 @@ static VALUE
 rb_str_tr(str, src, repl)
     VALUE str, src, repl;
 {
-    VALUE val = tr_trans(rb_str_dup(str), src, repl, 0);
+    VALUE val = tr_trans(str = rb_str_dup(str), src, repl, 0);
 
     if (NIL_P(val)) return str;
     return val;
@@ -1855,7 +1855,7 @@ rb_str_delete(argc, argv, str)
     VALUE *argv;
     VALUE str;
 {
-    VALUE val = rb_str_delete_bang(argc, argv, rb_str_dup(str));
+    VALUE val = rb_str_delete_bang(argc, argv, str = rb_str_dup(str));
 
     if (NIL_P(val)) return str;
     return val;
@@ -1869,7 +1869,7 @@ rb_str_squeeze_bang(argc, argv, str)
 {
     char squeez[256];
     char *s, *send, *t;
-    char c, save, modify = 0;
+    int c, save, modify = 0;
     int init = 1;
     int i;
 
@@ -1896,7 +1896,7 @@ rb_str_squeeze_bang(argc, argv, str)
     save = -1;
     while (s < send) {
 	c = *s++ & 0xff;
-	if (c != save || !squeez[c & 0xff]) {
+	if (c != save || !squeez[c]) {
 	    *t++ = save = c;
 	}
     }
@@ -1916,7 +1916,7 @@ rb_str_squeeze(argc, argv, str)
     VALUE *argv;
     VALUE str;
 {
-    VALUE val = rb_str_squeeze_bang(argc, argv, rb_str_dup(str));
+    VALUE val = rb_str_squeeze_bang(argc, argv, str = rb_str_dup(str));
 
     if (NIL_P(val)) return str;
     return val;
@@ -1933,7 +1933,7 @@ static VALUE
 rb_str_tr_s(str, src, repl)
     VALUE str, src, repl;
 {
-    VALUE val = tr_trans(rb_str_dup(str), src, repl, 1);
+    VALUE val = tr_trans(str = rb_str_dup(str), src, repl, 1);
 
     if (NIL_P(val)) return str;
     return val;
@@ -2222,7 +2222,7 @@ static VALUE
 rb_str_chop(str)
     VALUE str;
 {
-    VALUE val = rb_str_chop_bang(rb_str_dup(str));
+    VALUE val = rb_str_chop_bang(str = rb_str_dup(str));
 
     if (NIL_P(val)) return str;
     return val;
@@ -2238,8 +2238,8 @@ rb_f_chop_bang(str)
 static VALUE
 rb_f_chop()
 {
-    VALUE str = uscore_get();
-    VALUE val = rb_str_chop_bang(rb_str_dup(str));
+    VALUE str = rb_str_dup(uscore_get());
+    VALUE val = rb_str_chop_bang(str);
 
     if (NIL_P(val)) return str;
     rb_lastline_set(val);
@@ -2295,7 +2295,7 @@ rb_str_chomp(argc, argv, str)
     VALUE *argv;
     VALUE str;
 {
-    VALUE val = rb_str_chomp_bang(argc, argv, rb_str_dup(str));
+    VALUE val = rb_str_chomp_bang(argc, argv, str = rb_str_dup(str));
 
     if (NIL_P(val)) return str;
     return val;
@@ -2314,8 +2314,8 @@ rb_f_chomp(argc, argv)
     int argc;
     VALUE *argv;
 {
-    VALUE str = uscore_get();
-    VALUE val = rb_str_chomp_bang(argc, argv, rb_str_dup(str));
+    VALUE str = rb_str_dup(uscore_get());
+    VALUE val = rb_str_chomp_bang(argc, argv, str);
 
     if (NIL_P(val)) return str;
     rb_lastline_set(val);
@@ -2362,7 +2362,7 @@ static VALUE
 rb_str_strip(str)
     VALUE str;
 {
-    VALUE val = rb_str_strip_bang(rb_str_dup(str));
+    VALUE val = rb_str_strip_bang(str = rb_str_dup(str));
 
     if (NIL_P(val)) return str;
     return val;

In This Thread

Prev Next