summaryrefslogtreecommitdiff
path: root/re.c
diff options
context:
space:
mode:
Diffstat (limited to 're.c')
-rw-r--r--re.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/re.c b/re.c
index 2bb0411bc0..6d08fb81a1 100644
--- a/re.c
+++ b/re.c
@@ -990,6 +990,9 @@ match_select(argc, argv, match)
rb_warn("MatchData#select(index..) is deprecated; use MatchData#values_at");
return match_values_at(argc, argv, match);
}
+ if (argc > 0) {
+ rb_raise(rb_eArgError, "wrong number arguments(%d for 0)", argc);
+ }
else {
struct re_registers *regs = RMATCH(match)->regs;
VALUE target = RMATCH(match)->str;
@@ -1000,7 +1003,7 @@ match_select(argc, argv, match)
for (i=0; i<regs->num_regs; i++) {
VALUE str = rb_str_substr(target, regs->beg[i], regs->end[i]-regs->beg[i]);
if (taint) OBJ_TAINT(str);
- if (rb_yield(str)) {
+ if (RTEST(rb_yield(str))) {
rb_ary_push(result, str);
}
}