From: SASADA Koichi Date: 2008-12-25T13:14:15+09:00 Subject: [ruby-dev:37592] Re: [Bug: trunk] module_function中のsuperでSystemStackError  ささだです.  見つからない場合は Object を見に行くようなので,rb_cObject を返すよう にしてみました. Index: vm_insnhelper.c =================================================================== --- vm_insnhelper.c (リビジョン 20980) +++ vm_insnhelper.c (作業コピー) @@ -1172,20 +1172,24 @@ vm_method_search(VALUE id, VALUE klass, static inline VALUE vm_search_normal_superclass(VALUE klass, VALUE recv) { + VALUE sk = 0; + if (BUILTIN_TYPE(klass) == T_CLASS) { - klass = RCLASS_SUPER(klass); + sk = RCLASS_SUPER(klass); } else if (BUILTIN_TYPE(klass) == T_MODULE) { VALUE k = CLASS_OF(recv); while (k) { if (BUILTIN_TYPE(k) == T_ICLASS && RBASIC(k)->klass == klass) { - klass = RCLASS_SUPER(k); + sk = RCLASS_SUPER(k); break; } k = RCLASS_SUPER(k); } + sk = rb_cObject; } - return klass; + + return sk; } static void -- // SASADA Koichi at atdot dot net