summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--string.c2
2 files changed, 7 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index a2f1ebf5e..750bd06c0 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Tue Jul 14 17:29:20 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * string.c (rb_str_index_m): return nil if pos is out of string.
+ [ruby-core:23660]
+
Tue Jul 14 16:13:04 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
* io.c (rb_io_initialize): check if the descriptor can be accessed
diff --git a/string.c b/string.c
index 9418bfe2c..493ef5d87 100644
--- a/string.c
+++ b/string.c
@@ -2569,6 +2569,8 @@ rb_str_index_m(int argc, VALUE *argv, VALUE str)
switch (TYPE(sub)) {
case T_REGEXP:
+ if (pos > str_strlen(str, STR_ENC_GET(str)))
+ return Qnil;
pos = str_offset(RSTRING_PTR(str), RSTRING_END(str), pos,
rb_enc_check(str, sub), single_byte_optimizable(str));