From: "K.Kosako" Date: 2005-02-18T21:41:49+09:00 Subject: [ruby-dev:25718] Re: [Oniguruma 3.X] reggnu.c Minero Aoki wrote: >>こちらの都合で申し訳ありませんが、 >>以下のように変更しても構いませんか? > > それは構わないんですが、実は strscan には struct re_register を > 直接いじっている個所があります。ここです。 > > /* DANGEROUS; need to synchronize with regex.c */ > static void > adjust_registers_to_matched(p) > struct strscanner *p; > { > if (p->regs.allocated == 0) { > p->regs.beg = ALLOC_N(int, RE_NREGS); > p->regs.end = ALLOC_N(int, RE_NREGS); > p->regs.allocated = RE_NREGS; > } > p->regs.num_regs = 1; > p->regs.beg[0] = 0; > p->regs.end[0] = p->curr - p->prev; > } > > こういうコードは鬼車では危険だったりしますか。 現時点では危険ではありませんが、 将来のことも考えてonig_region_set() というような名前の関数を追加した上で、 以下のように変更しようと思います。 static void adjust_registers_to_matched(p) struct strscanner *p; { onig_region_clear(&(p->regs)); onig_region_set(&(p->regs), 0, 0, p->curr - p->prev); } -- 小迫