Skip to content

Commit 946d6d8

Browse files
committed
Fix string_view substr() handling of length for value npos
1 parent cfacc22 commit 946d6d8

File tree

2 files changed

+5
-5
lines changed

2 files changed

+5
-5
lines changed

include/nonstd/string.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -500,7 +500,7 @@ class basic_string_view
500500
throw std::out_of_range("string_view::substr()");
501501
}
502502
#endif
503-
return basic_string_view( data() + pos, (std::min)( n, size() - pos ) );
503+
return basic_string_view( data() + pos, n == npos? size() : (std::min)( n, size() - pos ) );
504504
}
505505

506506
string_nodiscard string_constexpr const_iterator begin() const string_noexcept { return data_; }

test/string.t.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -771,8 +771,8 @@ CASE( "split_left: split string into two-element tuple given set of delimiter ch
771771

772772
// std::cout << "[a:" << a << "][b:" << b << "]\n";
773773

774-
EXPECT( split_left("abc;def;ghi", ";" ) == (std::tuple<std17::string_view, std17::string_view>("abc", "def;ghi" )) );
775-
EXPECT( split_left("abc;def;ghi", "/" ) == (std::tuple<std17::string_view, std17::string_view>("abc;def;ghi", "")) );
774+
EXPECT( split_left("abc;def;ghi", ";") == (std::tuple<std17::string_view, std17::string_view>("abc", "def;ghi" )) );
775+
EXPECT( split_left("abc;def;ghi", "/") == (std::tuple<std17::string_view, std17::string_view>("abc;def;ghi", "abc;def;ghi")) );
776776
}
777777

778778
// TODO: split_right()
@@ -784,8 +784,8 @@ CASE( "split_right: split string into two-element tuple given set of delimiter c
784784

785785
// std::cout << "[a:" << a << "][b:" << b << "]\n";
786786

787-
EXPECT( split_right("abc;def;ghi", ";" ) == (std::tuple<std17::string_view, std17::string_view>("abc;def", "ghi" )) );
788-
EXPECT( split_right("abc;def;ghi", "/" ) == (std::tuple<std17::string_view, std17::string_view>( "", "abc;def;ghi")) );
787+
EXPECT( split_right("abc;def;ghi", ";") == (std::tuple<std17::string_view, std17::string_view>("abc;def", "ghi" )) );
788+
EXPECT( split_right("abc;def;ghi", "/") == (std::tuple<std17::string_view, std17::string_view>( "abc;def;ghi", "abc;def;ghi")) );
789789
}
790790

791791
// compare()

0 commit comments

Comments
 (0)