From d3062f3af4c4c0274ee7e886ece333a71814021b Mon Sep 17 00:00:00 2001 From: Tsuda Kageyu Date: Sat, 26 Nov 2016 13:05:14 +0900 Subject: [PATCH] A bit more tolerant check to return itself in String::substr(). --- taglib/toolkit/tstring.cpp | 2 +- tests/test_string.cpp | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/taglib/toolkit/tstring.cpp b/taglib/toolkit/tstring.cpp index ee8d04d1..1639d7c5 100644 --- a/taglib/toolkit/tstring.cpp +++ b/taglib/toolkit/tstring.cpp @@ -447,7 +447,7 @@ bool String::startsWith(const String &s) const String String::substr(unsigned int position, unsigned int n) const { - if(position == 0 && n == size()) + if(position == 0 && n >= size()) return *this; else return String(d->data.substr(position, n)); diff --git a/tests/test_string.cpp b/tests/test_string.cpp index b99c3f30..4e3a1ac5 100644 --- a/tests/test_string.cpp +++ b/tests/test_string.cpp @@ -257,6 +257,8 @@ public: CPPUNIT_ASSERT_EQUAL(String("01"), String("0123456").substr(0, 2)); CPPUNIT_ASSERT_EQUAL(String("12"), String("0123456").substr(1, 2)); CPPUNIT_ASSERT_EQUAL(String("123456"), String("0123456").substr(1, 200)); + CPPUNIT_ASSERT_EQUAL(String("0123456"), String("0123456").substr(0, 7)); + CPPUNIT_ASSERT_EQUAL(String("0123456"), String("0123456").substr(0, 200)); } void testNewline() -- 2.40.0