mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* string.c (rb_str_start_with, rb_str_end_with): raise an error if
an argument is not convertible to a String. [ruby-core:40623][Bug #5536] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35213 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
8630041945
commit
38b8afcf5a
3 changed files with 28 additions and 8 deletions
|
@ -1,3 +1,9 @@
|
|||
Mon Apr 2 10:34:00 2012 eregon <eregontp@gmail.com>
|
||||
|
||||
* string.c (rb_str_start_with, rb_str_end_with): raise an error if
|
||||
an argument is not convertible to a String.
|
||||
[ruby-core:40623][Bug #5536]
|
||||
|
||||
Mon Apr 2 03:35:25 2012 NARUSE, Yui <naruse@ruby-lang.org>
|
||||
|
||||
* lib/webrick/server.rb (WEBrick::GenericServer): close socket only if
|
||||
|
|
8
string.c
8
string.c
|
@ -7197,8 +7197,8 @@ rb_str_start_with(int argc, VALUE *argv, VALUE str)
|
|||
int i;
|
||||
|
||||
for (i=0; i<argc; i++) {
|
||||
VALUE tmp = rb_check_string_type(argv[i]);
|
||||
if (NIL_P(tmp)) continue;
|
||||
VALUE tmp = argv[i];
|
||||
StringValue(tmp);
|
||||
rb_enc_check(str, tmp);
|
||||
if (RSTRING_LEN(str) < RSTRING_LEN(tmp)) continue;
|
||||
if (memcmp(RSTRING_PTR(str), RSTRING_PTR(tmp), RSTRING_LEN(tmp)) == 0)
|
||||
|
@ -7222,8 +7222,8 @@ rb_str_end_with(int argc, VALUE *argv, VALUE str)
|
|||
rb_encoding *enc;
|
||||
|
||||
for (i=0; i<argc; i++) {
|
||||
VALUE tmp = rb_check_string_type(argv[i]);
|
||||
if (NIL_P(tmp)) continue;
|
||||
VALUE tmp = argv[i];
|
||||
StringValue(tmp);
|
||||
enc = rb_enc_check(str, tmp);
|
||||
if (RSTRING_LEN(str) < RSTRING_LEN(tmp)) continue;
|
||||
p = RSTRING_PTR(str);
|
||||
|
|
|
@ -659,6 +659,15 @@ class TestString < Test::Unit::TestCase
|
|||
assert(!S("not").empty?)
|
||||
end
|
||||
|
||||
def test_end_with?
|
||||
assert_send([S("hello"), :end_with?, S("llo")])
|
||||
assert_not_send([S("hello"), :end_with?, S("ll")])
|
||||
assert_send([S("hello"), :end_with?, S("el"), S("lo")])
|
||||
|
||||
bug5536 = '[ruby-core:40623]'
|
||||
assert_raise(TypeError, bug5536) {S("str").end_with? :not_convertible_to_string}
|
||||
end
|
||||
|
||||
def test_eql?
|
||||
a = S("hello")
|
||||
assert(a.eql?(S("hello")))
|
||||
|
@ -1207,6 +1216,15 @@ class TestString < Test::Unit::TestCase
|
|||
assert_nil(a.squeeze!)
|
||||
end
|
||||
|
||||
def test_start_with?
|
||||
assert_send([S("hello"), :start_with?, S("hel")])
|
||||
assert_not_send([S("hello"), :start_with?, S("el")])
|
||||
assert_send([S("hello"), :start_with?, S("el"), S("he")])
|
||||
|
||||
bug5536 = '[ruby-core:40623]'
|
||||
assert_raise(TypeError, bug5536) {S("str").start_with? :not_convertible_to_string}
|
||||
end
|
||||
|
||||
def test_strip
|
||||
assert_equal(S("x"), S(" x ").strip)
|
||||
assert_equal(S("x"), S(" \n\r\t x \t\r\n\n ").strip)
|
||||
|
@ -1774,10 +1792,6 @@ class TestString < Test::Unit::TestCase
|
|||
assert_nil(l.slice!(/\A.*\n/), "[ruby-dev:31665]")
|
||||
end
|
||||
|
||||
def test_end_with?
|
||||
assert("abc".end_with?("c"))
|
||||
end
|
||||
|
||||
def test_times2
|
||||
s1 = ''
|
||||
100.times {|n|
|
||||
|
|
Loading…
Reference in a new issue