summaryrefslogtreecommitdiff
path: root/re.c
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2009-02-03 05:20:27 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2009-02-03 05:20:27 +0000
commit1c400db1d57fecda49f1e32bd0a4711973d44a23 (patch)
tree30bf0c6db0bd5c49a9814d97eb2abefde4bbd8a4 /re.c
parent3f59f0e06c4755babf5b667d13779951280d92f2 (diff)
* re.c (match_array): replace match_check().
* re.c (match_values_at): ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@21999 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 're.c')
-rw-r--r--re.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/re.c b/re.c
index 938b96daf8..094d30cc53 100644
--- a/re.c
+++ b/re.c
@@ -1518,13 +1518,17 @@ last_paren_match_getter(void)
static VALUE
match_array(VALUE match, int start)
{
- struct re_registers *regs = RMATCH_REGS(match);
- VALUE ary = rb_ary_new2(regs->num_regs);
- VALUE target = RMATCH(match)->str;
+ struct re_registers *regs;
+ VALUE ary;
+ VALUE target;
int i;
int taint = OBJ_TAINTED(match);
match_check(match);
+ regs = RMATCH_REGS(match);
+ ary = rb_ary_new2(regs->num_regs);
+ target = RMATCH(match)->str;
+
for (i=start; i<regs->num_regs; i++) {
if (regs->beg[i] == -1) {
rb_ary_push(ary, Qnil);
@@ -1697,8 +1701,10 @@ match_entry(VALUE match, long n)
static VALUE
match_values_at(int argc, VALUE *argv, VALUE match)
{
- struct re_registers *regs = RMATCH_REGS(match);
+ struct re_registers *regs;
+
match_check(match);
+ regs = RMATCH_REGS(match);
return rb_get_values_at(match, regs->num_regs, argc, argv, match_entry);
}