[#37892] 配列の重複検出用Hashの使いまわし — wanabe <s.wanabe@...>
ワナベと申します。
[#37898] [Bug #1105] Ruby1.9でのrescue節の例外ハンドラのマッチの処理 — Tatsuji Kawai <redmine@...>
Bug #1105: Ruby1.9でのrescue節の例外ハンドラのマッチの処理
[#37910] [Bug:1.9] lack consistency in hash iteration — Yusuke ENDOH <mame@...>
遠藤です。
まつもと ゆきひろです
[#37918] [BUG: 1.9] encoding warning — SASADA Koichi <ko1@...>
ささだです.
[#37921] [Feature:trunk] with_index_from — Yusuke ENDOH <mame@...>
遠藤です。
At Thu, 5 Feb 2009 23:18:49 +0900,
遠藤です。
At Fri, 6 Feb 2009 00:58:59 +0900,
[#37936] zombie processes by drb tests — Tanaka Akira <akr@...>
OpenBSD で、test-all をすると、drb のところで、テストに 100
咳といいます。
[#37956] proposal: Module#method_adding — SASADA Koichi <ko1@...>
ささだです.
[#37959] [Bug:trunk] I can modify literals — Yusuke ENDOH <mame@...>
遠藤です。
[#37980] Re: [ruby-changes:10687] Ruby:r22250 (trunk): * iseq.c (simple_default_value): allow plain strings as default — SASADA Koichi <ko1@...>
ささだです.
[#37995] Add POSTARG support to rb_scan_args() — Akinori MUSHA <akinori.musha@...>
rb_scan_args()をPOSTARG対応にするパッチです。
[#37998] [Feature:1.9] {Array,Enumerable}#uniq_by, #uniq_by! — Nobuyoshi Nakada <nobu@...>
なかだです。
[#38005] Is URI.decode() broken? — MOROHASHI Kyosuke <moronatural@...>
もろはしです。いつもお世話になっております。
なかだです。
成瀬です、
xibbarこと藤岡です。
成瀬です。
NARUSE, Yui さんは書きました:
成瀬です。
(2009年03月03日 22:45), NARUSE, Yui さんは書きました:
成瀬です。
In article <4A9E44DD.6050706@airemix.jp>,
成瀬です。
小崎@思いつきを適当に書いてみるテスト
In article <20090907091830.2C7A.A69D9226@jp.fujitsu.com>,
> In article <20090907091830.2C7A.A69D9226@jp.fujitsu.com>,
2009/09/07 14:38, Tanaka Akira wrote:
In article <4AA5EA67.1040504@airemix.jp>,
[#38007] [Feature #1159] StringScanner に文字ベースでのインデックスを返すメソッドがほしい — Akira Matsuda <redmine@...>
Feature #1159: StringScanner に文字ベースでのインデックスを返すメソッドがほしい
[#38018] circular require in openssl — Tanaka Akira <akr@...>
以下のように、openssl には環状の require があり、警告が出ます。
In article <87vdrcul7y.fsf@fsij.org>,
まつもと ゆきひろです
In article <E1LYyoE-0005P0-Hi@x61.netlab.jp>,
[#38022] ENCODING_FIXED と ENCODING_NONE の廃止 — "NARUSE, Yui" <naruse@...>
成瀬です。
In article <49986A0A.5060602@airemix.jp>,
成瀬です。
In article <49995412.6040000@airemix.jp>,
[#38048] Add option hash support to rb_scan_args() — "Akinori MUSHA" <knu@...>
rb_scan_args() にoption hash対応を組み込むのはどうでしょうか。
[#38067] Re: [ruby-cvs:29304] Ruby:r22086 (trunk): * ruby.c (process_options): set initial default_external before -r. — "Yugui (Yuki Sonoda)" <yugui@...>
Yuguiです。
[#38075] [Bug #1198] corrupted iteratoin during "enum_for :inject" — Shyouhei Urabe <redmine@...>
Bug #1198: corrupted iteratoin during "enum_for :inject"
[#38080] [Feature:trunk] nested loop construct — Yukihiro Matsumoto <matz@...>
まつもと ゆきひろです
ささだです.
[#38096] 多重代入やメソッド引数の展開でto_aが呼ばれます — nagachika <nagachika00@...>
nagachika と申します。
前田です。
まつもと ゆきひろです
前田です。
In article <704d5db90907141754p285e6e51xdd3208b27d556906@mail.gmail.com>,
[#38098] ブロック引数と括弧・引数なしsuper — Shugo Maeda <shugo@...>
前田です。
まつもと ゆきひろです
[ruby-dev:38093] Re: [Bug:trunk] duplicate when clauses raise strange exception
なかだです。
At Thu, 26 Feb 2009 00:17:40 +0900,
Yusuke ENDOH wrote in [ruby-dev:38079]:
> 文字列の when 節を重複させると、怪しい例外があがります。
>
> $ ruby19 -e 'case "x"; when "x"; when "x"; end'
> ruby19: method `eql?' called on terminated object (0x826e0f0)
> (NotImplementedError)
>
> [ruby-dev:37959] の関係で、文字列リテラルが不可視になった影響のようです。
> 不可視をやめてしまえばとりあえず解決しますが、そうすると ObjectSpace で
> when 節の文字列を書き換えられてしまうようになります。
> どうしたものでしょう。
これを調べていてもう一つ気づいたのが
./ruby -v -e '
class S < String
def eql?(s)
@literal = s
super
end
attr_reader :literal
end
case a = S.new("x")
when "x"
end
p a.literal
'
ruby 1.9.2dev (2009-02-26 trunk 22637) [i386-darwin9.6.0]
-e:13:in `p': method `inspect' called on terminated object (0x11cdf8) (NotImplementedError)
from -:12:in `<main>'
最適化されないときには "x" === a が呼ばれますが、されていると
a.eql?("x") が呼ばれます。リテラルを隠そうと思うなら、Hashをその
まま使うのはまずいと思います。
Index: compile.c
===================================================================
--- compile.c (revision 22639)
+++ compile.c (working copy)
@@ -1217,4 +1217,36 @@ iseq_set_local_table(rb_iseq_t *iseq, ID
}
+static int
+cdhash_cmp(VALUE val, VALUE lit)
+{
+ if (val == lit) return 0;
+ if (SPECIAL_CONST_P(lit)) {
+ return val != lit;
+ }
+ if (SPECIAL_CONST_P(val) || BUILTIN_TYPE(val) != BUILTIN_TYPE(lit)) {
+ return -1;
+ }
+ if (BUILTIN_TYPE(lit) == T_STRING) {
+ return rb_str_hash_cmp(lit, val);
+ }
+ return !rb_eql(lit, val);
+}
+
+static int
+cdhash_hash(VALUE a)
+{
+ if (SPECIAL_CONST_P(a)) return (int)a;
+ if (TYPE(a) == T_STRING) return rb_str_hash(a);
+ {
+ VALUE hval = rb_hash(a);
+ return (int)FIX2LONG(hval);
+ }
+}
+
+static const struct st_hash_type cdhash_type = {
+ cdhash_cmp,
+ cdhash_hash,
+};
+
/**
ruby insn object array -> raw instruction sequence
@@ -1344,4 +1376,5 @@ iseq_set_sequence(rb_iseq_t *iseq, LINK_
VALUE lits = operands[j];
VALUE map = rb_hash_new();
+ RHASH_TBL(map)->type = &cdhash_type;
for (i=0; i < RARRAY_LEN(lits); i+=2) {
--
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
中田 伸悦