Bug #112

Rational("355/113") clear $&

Added by Anonymous almost 7 years ago. Updated almost 4 years ago.

[ruby-dev:34990]
Status:Closed
Priority:Low
Assignee:Yukihiro Matsumoto
ruby -v: Backport:

Description

=begin
以下のように、Rational("355/113") とすると $& が nil になり
ます。

% ./ruby -ve '/a/ =~ "a"
p $&
Rational("355/113")
p $&
'
ruby 1.9.0 (2008-06-07 revision 16875) [i686-linux]
"a"
nil
--
[田中 哲][たなか あきら][Tanaka Akira]
=end

History

#1 Updated by Yukihiro Matsumoto almost 7 years ago

  • Assignee set to Yukihiro Matsumoto

=begin

=end

#2 Updated by Anonymous almost 7 years ago

  • Status changed from Open to Closed
  • % Done changed from 0 to 100

=begin
Applied in changeset r17147.
=end

#3 Updated by Anonymous almost 7 years ago

=begin
Issue #112 has been updated by Anonymous.

Status changed from Open to Closed
% Done changed from 0 to 100

Applied in changeset r17147.


Bug #112: Rational("355/113") clear $&
http://redmine.ruby-lang.org/issues/show/112

Author: Anonymous
Status: Closed
Priority: Low
Assigned to: Yukihiro Matsumoto
Category:
Target version:

以下のように、Rational("355/113") とすると $& が nil になり
ます。

% ./ruby -ve '/a/ =~ "a"
p $&
Rational("355/113")
p $&
'
ruby 1.9.0 (2008-06-07 revision 16875) [i686-linux]
"a"
nil
--
[田中 哲][たなか あきら][Tanaka Akira]


You have received this notification because you have either subscribed to it, or are involved in it.
To change your notification preferences, please click here: http://redmine.ruby-lang.org/my/account

=end

#4 Updated by Anonymous almost 7 years ago

=begin

ワナベと申します。

2008/06/09 20:22 Tadayoshi Funaba tadf@dotrb.org:

以下のように、Rational("355/113") とすると $& が nil になり
ます。

内部で match をつかってるのが影響していると思いますが、どう対処したら
いいんでしょうね。コンテキストの問題なのか、最初から副作用がないような
手段をとらないといけないのか。

単純に backref を一時保存・復帰するのはどうでしょうか。

Index: rational.c
===================================================================
--- rational.c (revision 17112)
+++ rational.c (working copy)
@@ -1274,13 +1274,15 @@
static VALUE
string_to_r_internal(VALUE self)
{
- VALUE s, m;
+ VALUE s, m, backref;

  s = f_strip(self);

  if (RSTRING_LEN(s) == 0)
return rb_assoc_new(Qnil, self);
  • backref = rb_backref_get();
  • rb_match_busy(backref);
    m = f_match(rat_pat, s);

    if (!NIL_P(m)) {
    @@ -1333,8 +1335,10 @@
    if (!NIL_P(de))
    v = f_div(v, f_to_i(de));

  • rb_backref_set(backref);
    return rb_assoc_new(v, re);
    }

  • rb_backref_set(backref);
    return rb_assoc_new(Qnil, self);
    }

--
ワナベ

=end

#5 Updated by Yukihiro Matsumoto almost 7 years ago

=begin

まつもと ゆきひろです

In message "Re: Re: [Bug:1.9] Rational("355/113") clear $&"
on Fri, 13 Jun 2008 00:49:43 +0900, wanabe s.wanabe@gmail.com writes:

|2008/06/09 20:22 Tadayoshi Funaba tadf@dotrb.org:
|>> 以下のように、Rational("355/113") とすると $& が nil になり
|>> ます。
|>
|> 内部で match をつかってるのが影響していると思いますが、どう対処したら
|> いいんでしょうね。コンテキストの問題なのか、最初から副作用がないような
|> 手段をとらないといけないのか。
|
|単純に backref を一時保存・復帰するのはどうでしょうか。

正規表現を使わない方法が良いのではないだろうかと考えていまし
たが、ちょっと手間がかかりますから、当面保存・復帰で対処した
方がよいでしょう。

コミットしていただけますか?

# ところで、コミットすると自動的にRedmineが行進される仕組みは
# ないのかなあ。

=end

#6 Updated by Usaku NAKAMURA almost 7 years ago

=begin

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

In message " Re: [Bug:1.9] Rational("355/113") clear $&"
on Jun.13,2008 10:04:54, matz@ruby-lang.org wrote:

ところで、コミットすると自動的にRedmineが行進される仕組みは

ないのかなあ。

あるそうですよ。

http://redmine.ruby-lang.org/wiki/redmine/VersionControlSystemJa

それでは。
--
U.Nakamura usa@garbagecollect.jp

=end

#7 Updated by Yukihiro Matsumoto almost 7 years ago

=begin

まつもと ゆきひろです

In message "Re: Re: [Bug:1.9] Rational("355/113") clear $&"
on Fri, 13 Jun 2008 14:03:31 +0900, "U.Nakamura" usa@garbagecollect.jp writes:

|In message " Re: [Bug:1.9] Rational("355/113") clear $&"
| on Jun.13,2008 10:04:54, matz@ruby-lang.org wrote:
|> # ところで、コミットすると自動的にRedmineが行進される仕組みは
|> # ないのかなあ。
|
|あるそうですよ。
|
|http://redmine.ruby-lang.org/wiki/redmine/VersionControlSystemJa

おおっ、

fixed

ですね。今後活用させてもらいます。

=end

#8 Updated by Koichi Sasada almost 7 years ago

=begin

 ささだです.

Yukihiro Matsumoto wrote:

おおっ、

fixed

ですね。今後活用させてもらいます。

 先日,yugui さんに [ruby-dev:xxxx] でも fix として扱ってもらうよう
に頼みました.従来の ChangeLog フォーマットが,そんなふうになってい
るからです.

 逆に,ref の場合に ref [ruby-dev:xxxx] と書いてもらうようになるよ
うです.

--
// SASADA Koichi at atdot dot net

=end

Also available in: Atom PDF