From f758195486cbe49c647140a9e1c5623eeebbeaac Mon Sep 17 00:00:00 2001 From: matz Date: Fri, 31 Jan 2003 03:15:33 +0000 Subject: * parse.y (yylex): remove EXPR_CMDARG according to the RHG book. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3425 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- string.c | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) (limited to 'string.c') diff --git a/string.c b/string.c index 47026d40f3..cc82c7fb57 100644 --- a/string.c +++ b/string.c @@ -892,10 +892,6 @@ rb_str_index_m(argc, argv, str) pos = rb_reg_search(sub, str, pos, 0); break; - case T_STRING: - pos = rb_str_index(str, sub, pos); - break; - case T_FIXNUM: { int c = FIX2INT(sub); @@ -908,9 +904,20 @@ rb_str_index_m(argc, argv, str) return Qnil; } - default: - rb_raise(rb_eTypeError, "type mismatch: %s given", - rb_class2name(CLASS_OF(sub))); + default: { + VALUE tmp; + + tmp = rb_check_string_type(sub); + if (NIL_P(tmp)) { + rb_raise(rb_eTypeError, "type mismatch: %s given", + rb_class2name(CLASS_OF(sub))); + } + sub = tmp; + } + /* fall through */ + case T_STRING: + pos = rb_str_index(str, sub, pos); + break; } if (pos == -1) return Qnil; -- cgit v1.2.3