summaryrefslogtreecommitdiff
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 61d59c5e00..e3b2bcd53d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Wed Jul 26 16:39:07 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * string.c (rb_str_scan): add string modification check.
+ [ruby-core:7216]
+
Wed Jul 26 16:06:03 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
* lib/cgi.rb (CGI::QueryExtension::read_multipart): check
diff --git a/string.c b/string.c
index 16939e15f6..816dde4b0b 100644
--- a/string.c
+++ b/string.c
@@ -3919,6 +3919,7 @@ rb_str_scan(VALUE str, VALUE pat)
VALUE result;
long start = 0;
VALUE match = Qnil;
+ char *p = RSTRING(str)->ptr; long len = RSTRING(str)->len;
pat = get_pat(pat, 1);
if (!rb_block_given_p()) {
@@ -3936,6 +3937,7 @@ rb_str_scan(VALUE str, VALUE pat)
match = rb_backref_get();
rb_match_busy(match);
rb_yield(result);
+ str_mod_check(str, p, len);
rb_backref_set(match); /* restore $~ value */
}
rb_backref_set(match);