summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoraamine <aamine@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2006-07-26 09:41:08 +0000
committeraamine <aamine@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2006-07-26 09:41:08 +0000
commitc9500ee8d94e0ff1ac600b14998ba23bc7e743ef (patch)
tree75894d87f62acf79acb966820e1dca8127fea1ff
parentc0a80890440ff24e8dbd704204856d62feb3142c (diff)
* ext/strscan/strscan.c (strscan_do_scan): always return nil if p->curr exceeds string size.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@10610 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog5
-rw-r--r--ext/strscan/strscan.c5
2 files changed, 9 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 6791507..3a54f7e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Wed Jul 26 18:38:13 2006 Minero Aoki <aamine@loveruby.net>
+
+ * ext/strscan/strscan.c (strscan_do_scan): always return nil if
+ p->curr exceeds string size.
+
Wed Jul 26 18:33:31 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
* eval.c (Init_eval): rename #invoke_method and
diff --git a/ext/strscan/strscan.c b/ext/strscan/strscan.c
index dcb70a7..9529bc3 100644
--- a/ext/strscan/strscan.c
+++ b/ext/strscan/strscan.c
@@ -1,7 +1,7 @@
/*
$Id$
- Copyright (c) 1999-2005 Minero Aoki
+ Copyright (c) 1999-2006 Minero Aoki
This program is free software.
You can distribute/modify this program under the terms of
@@ -401,6 +401,9 @@ strscan_do_scan(VALUE self, VALUE regex, int succptr, int getstr, int headonly)
GET_SCANNER(self, p);
CLEAR_MATCH_STATUS(p);
+ if (S_RESTLEN(p) < 0) {
+ return Qnil;
+ }
if (headonly) {
ret = onig_match(RREGEXP(regex)->ptr, (UChar* )CURPTR(p),
(UChar* )(CURPTR(p) + S_RESTLEN(p)),