summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNobuyoshi Nakada <nobu@ruby-lang.org>2020-01-16 15:36:38 +0900
committerNobuyoshi Nakada <nobu@ruby-lang.org>2020-01-16 15:36:38 +0900
commitfce54a5404139a77bd0b7d6f82901083fcb16f1e (patch)
tree96dea163219ecec19dac5b3059b615a52274cd86
parent0b6682dc57afc95eca9f75f895ec1bf554697e6c (diff)
Fix `String#partition`
Split with the matched part when the separator matches the empty part at the beginning. [Bug #11014]
-rw-r--r--string.c1
-rw-r--r--test/ruby/test_string.rb2
2 files changed, 2 insertions, 1 deletions
diff --git a/string.c b/string.c
index 2413fbf8fc..ca425e9780 100644
--- a/string.c
+++ b/string.c
@@ -9795,7 +9795,6 @@ rb_str_partition(VALUE str, VALUE sep)
return rb_ary_new3(3, rb_str_dup(str), str_new_empty(str), str_new_empty(str));
}
sep = rb_str_subpat(str, sep, INT2FIX(0));
- if (pos == 0 && RSTRING_LEN(sep) == 0) goto failed;
}
else {
pos = rb_str_index(str, sep, 0);
diff --git a/test/ruby/test_string.rb b/test/ruby/test_string.rb
index 09d099bb4a..f0b765314c 100644
--- a/test/ruby/test_string.rb
+++ b/test/ruby/test_string.rb
@@ -2567,6 +2567,8 @@ CODE
hello = "hello"
hello.partition("hi").map(&:upcase!)
assert_equal("hello", hello, bug)
+
+ assert_equal(["", "", "foo"], "foo".partition(/^=*/))
end
def test_rpartition