summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoraamine <aamine@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2006-07-26 08:44:57 +0000
committeraamine <aamine@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2006-07-26 08:44:57 +0000
commit1578fc640ddf7577d34706449cbaa4161943ae8b (patch)
tree2c31f12bc46f04362051c1415ee1f565e3ce17eb
parente08bd9d9b82d7aafbc8b3df6454172b6110decf3 (diff)
downloadruby-1578fc640ddf7577d34706449cbaa4161943ae8b.tar.gz
ruby-1578fc640ddf7577d34706449cbaa4161943ae8b.tar.xz
ruby-1578fc640ddf7577d34706449cbaa4161943ae8b.zip
* ext/strscan/strscan.c (strscan_do_scan): StringScanner.new("").scan(//) should return "". [ruby-Bugs:4361]
git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@10606 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog5
-rw-r--r--ext/strscan/strscan.c7
-rw-r--r--test/strscan/test_stringscanner.rb10
3 files changed, 15 insertions, 7 deletions
diff --git a/ChangeLog b/ChangeLog
index 0278d0be3..374232e0d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Wed Jul 26 17:43:20 2006 Minero Aoki <aamine@loveruby.net>
+
+ * ext/strscan/strscan.c (strscan_do_scan):
+ StringScanner.new("").scan(//) should return "". [ruby-Bugs:4361]
+
Wed Jul 26 17:28:16 2006 Nobuyoshi Nakada <nobu@ruby-lang.org>
* sprintf.c (rb_str_format): prepend ".." to %u for negative bignum,
diff --git a/ext/strscan/strscan.c b/ext/strscan/strscan.c
index 1dd61e596..dcb70a774 100644
--- a/ext/strscan/strscan.c
+++ b/ext/strscan/strscan.c
@@ -391,9 +391,6 @@ strscan_set_pos(VALUE self, VALUE v)
return INT2NUM(i);
}
-/* I should implement this function? */
-#define strscan_prepare_re(re) /* none */
-
static VALUE
strscan_do_scan(VALUE self, VALUE regex, int succptr, int getstr, int headonly)
{
@@ -404,10 +401,6 @@ strscan_do_scan(VALUE self, VALUE regex, int succptr, int getstr, int headonly)
GET_SCANNER(self, p);
CLEAR_MATCH_STATUS(p);
- if (EOS_P(p)) {
- return Qnil;
- }
- strscan_prepare_re(regex);
if (headonly) {
ret = onig_match(RREGEXP(regex)->ptr, (UChar* )CURPTR(p),
(UChar* )(CURPTR(p) + S_RESTLEN(p)),
diff --git a/test/strscan/test_stringscanner.rb b/test/strscan/test_stringscanner.rb
index deb05d29a..5b0fd53c7 100644
--- a/test/strscan/test_stringscanner.rb
+++ b/test/strscan/test_stringscanner.rb
@@ -242,6 +242,11 @@ class TestStringScanner < Test::Unit::TestCase
s.string.replace ''
# unspecified: assert_equal 2, s.pos
assert_equal nil, s.scan(/test/)
+
+ # [ruby-bugs:4361]
+ s = StringScanner.new("")
+ assert_equal "", s.scan(//)
+ assert_equal "", s.scan(//)
end
def test_skip
@@ -259,6 +264,11 @@ class TestStringScanner < Test::Unit::TestCase
s.scan(/te/)
s.string.replace ''
assert_equal nil, s.skip(/./)
+
+ # [ruby-bugs:4361]
+ s = StringScanner.new("")
+ assert_equal 0, s.skip(//)
+ assert_equal 0, s.skip(//)
end
def test_getch