summaryrefslogtreecommitdiff
path: root/string.c
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2001-12-11 03:48:08 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2001-12-11 03:48:08 +0000
commita59c599209a11d4ab0dc0d7626ab3d5ca43a78c2 (patch)
treef4c4400099a7feb51a7b303cbedc0e1f04714f43 /string.c
parent8a91c99905c1bfbf441ec890161538acc8e34120 (diff)
* string.c (rb_str_match_m): should convert an argument into
regexp if it's a string. * array.c (rb_ary_select): Array#select(n,m,...) now works like Array#indexes(n,m,..). [new, experimental] * hash.c (rb_hash_select): ditto. * hash.c (env_select): ditto. * re.c (match_select): ditto. * struct.c (rb_struct_select): ditto. * gc.c (STR_ASSOC): use FL_USER3 instead of FL_USER2. * parse.y (str_extend): make up pushback call. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@1905 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'string.c')
-rw-r--r--string.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/string.c b/string.c
index f3520813a0..640cf7f6de 100644
--- a/string.c
+++ b/string.c
@@ -812,6 +812,7 @@ static VALUE
rb_str_match2(str)
VALUE str;
{
+ StringValue(str);
return rb_reg_match2(rb_reg_regcomp(str));
}
@@ -819,6 +820,12 @@ static VALUE
rb_str_match_m(str, re)
VALUE str, re;
{
+ VALUE str2 = rb_check_convert_type(re, T_STRING, "String", "to_str");
+
+ if (!NIL_P(str2)) {
+ StringValue(re);
+ re = rb_reg_regcomp(re);
+ }
return rb_funcall(re, rb_intern("match"), 1, str);
}