[#7102] Ruby 1.3.4-990611 — Yukihiro Matsumoto <matz@...>

Ruby 1.3.4-990611 is out, check out:

20 messages 1999/06/11

[#7223] Ruby 1.3.4-990625 — Yukihiro Matsumoto <matz@...>

Ruby 1.3.4-990625 is out, check out:

14 messages 1999/06/25
[#7224] -Wl,-rpath on Linux (Re: Ruby 1.3.4-990625) — Ryo HAYASAKA <hayasaka@...21.u-aizu.ac.jp> 1999/06/25

早坂@会津大学です。

[ruby-dev:7173] [BUG] <<`HERE_DOC`

From: Koji Arai <JCA02266@...>
Date: 1999-06-22 15:32:50 UTC
List: ruby-dev #7173
新井です。

1.2.6リリースを契機にちょっといじってたらバグを見
つけてしまいました。スミマセン(--;。

1.3.4-990611も同様なんですが

cmd = "echo test"

puts `echo test1`
puts `#{cmd}2`

puts <<`END`
echo test3
echo test3
echo test3		# bug1 最後の行だけ実行される
END

puts <<`END`		# bug2 コマンドが実行されない(文字列になる)
#{cmd}4
END

上記の結果が

test1
test2
test3
echo test4

となります。

以下、1.3.4のパッチなんだけどこれでいいのかなぁ?

Index: parse.y
===================================================================
RCS file: /home/cvs/ruby/parse.y,v
retrieving revision 1.1.1.3.2.24
diff -u -r1.1.1.3.2.24 parse.y
--- parse.y	1999/06/09 09:21:26	1.1.1.3.2.24
+++ parse.y	1999/06/22 15:24:59
@@ -2388,10 +2388,12 @@
 	    }
 	    break;
 	  case tDSTRING:
+	    if (!list) list = NEW_DSTR(str);
 	  case tDXSTRING:
+	    if (!list) list = NEW_DXSTR(str);
+
 	    list_append(yylval.node, NEW_STR(rb_str_new2("\n")));
 	    nd_set_type(yylval.node, NODE_STR);
-	    if (!list) list = NEW_DSTR(str);
 	    yylval.node = NEW_LIST(yylval.node);
 	    yylval.node->nd_next = yylval.node->nd_head->nd_next;
 	    list_concat(list, yylval.node);
@@ -2427,6 +2429,7 @@
 	return tSTRING;
       case '`':
 	if (list) return tDXSTRING;
+	yylval.val = str;
 	return tXSTRING;
     }
     return 0;


あっ /* fall through */ って書くのを忘れてた。

In This Thread

Prev Next