From fce54a5404139a77bd0b7d6f82901083fcb16f1e Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Thu, 16 Jan 2020 15:36:38 +0900 Subject: [PATCH] Fix `String#partition` Split with the matched part when the separator matches the empty part at the beginning. [Bug #11014] --- string.c | 1 - test/ruby/test_string.rb | 2 ++ 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/string.c b/string.c index 2413fbf8fc0ffa..ca425e97808154 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 09d099bb4afaf5..f0b765314c9de9 100644 --- a/test/ruby/test_string.rb +++ b/test/ruby/test_string.rb @@ -2567,6 +2567,8 @@ def (hyphen = Object.new).to_str; "-"; end hello = "hello" hello.partition("hi").map(&:upcase!) assert_equal("hello", hello, bug) + + assert_equal(["", "", "foo"], "foo".partition(/^=*/)) end def test_rpartition