[#43284] [Ruby 1.9 - Bug #4456] [Open] Time#strftime で %F 指定子に大きな幅を指定した際の不具合 — tadayoshi funaba <redmine@...>

14 messages 2011/03/02

[#43317] [Ruby 1.9 - Bug #4474][Open] 複数のスレッドからトランザクションに入ろうとした場合のPStoreの挙動 — Masaki Matsushita <redmine@...>

9 messages 2011/03/06

[#43327] [Ruby 1.9 - Feature #4483][Open] PStoreをデフォルトで複数のスレッドから扱えるようにしたい — Masaki Matsushita <redmine@...>

10 messages 2011/03/08

[#43365] [Ruby 1.9 - Bug #4536][Open] 定数参照について1.8と1.9の違い — Yukihiro Matsumoto <matz@...>

11 messages 2011/03/29

[ruby-dev:43367] Re: [Ruby 1.9 - Bug #4536][Open] 定数参照について1.8と1.9の違い

From: Shugo Maeda <shugo@...>
Date: 2011-03-29 09:37:47 UTC
List: ruby-dev #43367
前田です。

2011年3月29日17:55 SASADA Koichi <ko1@atdot.net>:
> module A; B = 42; end
> A.class_eval{p B}
> #=> `block in <main>': uninitialized constant Module::B (NameError)
>
> なので,それが動くのはまずいかもしれませんね.少し考えさせてください.

以下のようにCOPY_CREFでフラグを伝搬させるとこの部分に関しては1.8と同じ動作になるようです。

diff --git a/vm_insnhelper.h b/vm_insnhelper.h
index 979c342..31ef216 100644
--- a/vm_insnhelper.h
+++ b/vm_insnhelper.h
@@ -154,6 +154,9 @@ extern VALUE ruby_vm_const_missing_count;
   (c1)->nd_clss = __tmp_c2->nd_clss; \
   (c1)->nd_visi = __tmp_c2->nd_visi;\
   (c1)->nd_next = __tmp_c2->nd_next; \
+  if (__tmp_c2->flags & NODE_FL_CREF_PUSHED_BY_EVAL) { \
+      (c1)->flags |= NODE_FL_CREF_PUSHED_BY_EVAL; \
+  } \
 } while (0)

 #define CALL_METHOD(num, blockptr, flag, id, me, recv) do { \

あんまりちゃんと考えてないので副作用があるかも。

> # しかし,なんで Module::B なんだ.

こっちはまだ見てませんが、何なんでしょうね…。

-- 
Shugo Maeda

In This Thread