遠藤と申します。 1.9 で以下のようにすると落ちます。 $ ./ruby -e '$&;[]' -e:1: -- control frame ---------- c:0003 p:0006 s:0006 b:0005 l:000004 d:000004 TOP -e:1 c:0002 p:---- s:0003 b:0003 l:000002 d:000002 FINISH :inherited c:0001 p:---- s:0001 b:-001 l:000000 d:000000 ------ --------------------------- -- backtrace of native function call (Use addr2line) -- 0x80da8f5 0x80f3b40 0x80d7c26 0x80d8314 0x80d8709 0x8059042 0x8059066 0x805d5f1 0x8056d1f 0xb7df8ea8 0x8056c51 ------------------------------------------------------- [BUG] Stack consistency error (sp: 6, bp: 5) ruby 1.9.0 (2007-06-27) [i686-linux] アボートしました (core dumped) $`;0 や $1;0 でも同様に落ちます。 getglobal のコードから推測するに、こんな感じでしょうか。 はずれてたらごめんなさい。 Index: compile.c =================================================================== --- compile.c (revision 12635) +++ compile.c (working copy) @@ -3810,11 +3810,17 @@ case NODE_NTH_REF:{ ADD_INSN2(ret, nd_line(node), getspecial, INT2FIX(1) /* '~' */, INT2FIX(node->nd_nth << 1)); + if (poped) { + ADD_INSN(ret, nd_line(node), pop); + } break; } case NODE_BACK_REF:{ ADD_INSN2(ret, nd_line(node), getspecial, INT2FIX(1) /* '~' */, INT2FIX(0x01 | (node->nd_nth << 1))); + if (poped) { + ADD_INSN(ret, nd_line(node), pop); + } break; } case NODE_MATCH: -- Yusuke ENDOH <mame / tsg.ne.jp>