From: wanabe Date: 2008-04-29T14:19:26+09:00 Subject: [ruby-dev:34537] Re: regexp match confused by thread. ワナベと申します。 08/04/23 に Tanaka Akira さんは書きました: > 以下のプログラムで、$~.size は、/((ab)*(ab)*)*b/ には括弧が > 3つ入っているため、4 を表示するはずなのですが、1 が表示され > ます。 こんな感じでどうでしょうか。 Index: re.c =================================================================== --- re.c (revision 16218) +++ re.c (working copy) @@ -1255,7 +1255,7 @@ { int result; VALUE match; - static struct re_registers regs; + struct re_registers regs; char *range = RSTRING_PTR(str); regex_t *reg0 = RREGEXP(re)->ptr, *reg; int busy = FL_TEST(re, REG_BUSY); @@ -1271,6 +1271,7 @@ if (!reverse) { range += RSTRING_LEN(str); } + MEMZERO(®s, struct re_registers, 1); result = onig_search(reg, (UChar*)(RSTRING_PTR(str)), ((UChar*)(RSTRING_PTR(str)) + RSTRING_LEN(str)), -- ワナベ