Skip to content

Commit 1d24a93

Browse files
committed
merge revision(s) 21dced8: [Backport #19389]
[ruby/stringio] [Bug #19389] Fix chomping with longer separator ruby/stringio@eb322a9716 --- ext/stringio/stringio.c | 5 +++-- test/stringio/test_stringio.rb | 2 ++ 2 files changed, 5 insertions(+), 2 deletions(-)
1 parent 8322413 commit 1d24a93

File tree

3 files changed

+6
-3
lines changed

3 files changed

+6
-3
lines changed

ext/stringio/stringio.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1233,8 +1233,9 @@ strio_getline(struct getline_arg *arg, struct StringIO *ptr)
12331233
str = strio_substr(ptr, ptr->pos, e - s - w, enc);
12341234
}
12351235
else {
1236-
if (n < e - s) {
1237-
if (e - s < 1024) {
1236+
if (n < e - s + arg->chomp) {
1237+
/* unless chomping, RS at the end does not matter */
1238+
if (e - s < 1024 || n == e - s) {
12381239
for (p = s; p + n <= e; ++p) {
12391240
if (MEMCMP(p, RSTRING_PTR(str), char, n) == 0) {
12401241
e = p + (arg->chomp ? 0 : n);

test/stringio/test_stringio.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,8 @@ def test_gets_chomp
9999
assert_equal("def", stringio.gets("", chomp: true))
100100

101101
assert_string("", Encoding::UTF_8, StringIO.new("\n").gets(chomp: true))
102+
103+
assert_equal("", StringIO.new("ab").gets("ab", chomp: true))
102104
end
103105

104106
def test_gets_chomp_eol

version.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
# define RUBY_VERSION_MINOR RUBY_API_VERSION_MINOR
1212
#define RUBY_VERSION_TEENY 4
1313
#define RUBY_RELEASE_DATE RUBY_RELEASE_YEAR_STR"-"RUBY_RELEASE_MONTH_STR"-"RUBY_RELEASE_DAY_STR
14-
#define RUBY_PATCHLEVEL 199
14+
#define RUBY_PATCHLEVEL 200
1515

1616
#define RUBY_RELEASE_YEAR 2023
1717
#define RUBY_RELEASE_MONTH 3

0 commit comments

Comments
 (0)