From: Koji Arai Date: 1999-02-21T00:47:34+09:00 Subject: [ruby-dev:5412] Re: #{\n}\\ in heredoc 新井です。 遅ればせながら ruby-1.2.3を頂いたのですが、 >>> From: matz@netlab.co.jp (Yukihiro Matsumoto) >>> Date: 13 Feb 1999 09:57:16 +0900 >>> Subject: [ruby-dev:5069] Re: #{\n}\\ in heredoc > まつもと ゆきひろです > |これは、バグですよね? > | > |とにかく、 > |#{ > |}\\ > | > |があると、それ以降の動作が変(な気がする)。 > > バグです.here_docの中の#{}に改行を含むとその末尾を含む行を > 読み飛ばしてました. > これ、1.2系で、fixしてないですね。ちょっと困った。 1.3.1-990215 を元に 1.2.3用のパッチを作ってみました(あってますか?)。 --- parse.y.org Tue Feb 9 12:29:23 1999 +++ parse.y Sat Feb 20 02:55:47 1999 @@ -2221,7 +2221,7 @@ str = str_new(0,0); for (;;) { - line = io_gets(lex_input); + lex_lastline = line = io_gets(lex_input); if (NIL_P(line)) { error: Error("unterminated string meets end of file"); @@ -2237,6 +2237,7 @@ lex_pbeg = lex_p = RSTRING(line)->ptr; lex_pend = lex_p + RSTRING(line)->len; + retry: switch (parse_string(term, '\n', '\n')) { case tSTRING: case tXSTRING: @@ -2260,6 +2261,10 @@ case 0: goto error; + } + if (lex_lastline != line) { + line = lex_lastline; + goto retry; } } free(eos);