diff options
author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2003-01-31 03:15:33 +0000 |
---|---|---|
committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2003-01-31 03:15:33 +0000 |
commit | f758195486cbe49c647140a9e1c5623eeebbeaac (patch) | |
tree | 7d2c78d56467677cf1787452c3e630229c9bf4bb /string.c | |
parent | e13bfb15096a9d12e93055fbe6526d15bc54e20c (diff) | |
download | ruby-f758195486cbe49c647140a9e1c5623eeebbeaac.tar.gz |
* 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
Diffstat (limited to 'string.c')
-rw-r--r-- | string.c | 21 |
1 files changed, 14 insertions, 7 deletions
@@ -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; |