From c9a0754e3b4eff05491ac82ecd934aa86bf665d5 Mon Sep 17 00:00:00 2001 From: Martin Flaska Date: Fri, 25 Nov 2016 15:32:26 +0100 Subject: [PATCH] tstring: String::substr optimization when returning itself as a substring Use copy ctor to return in a case whole string is being returned. The intention was to optimize String::stripWhiteSpace for no-strip case (without any leading or trailing white space removal). copyFromUTF16 was used in any case previously and allocated duplicate buffer for the same string - no implicit sharing. Signed-off-by: Martin Flaska --- taglib/toolkit/tstring.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/taglib/toolkit/tstring.cpp b/taglib/toolkit/tstring.cpp index b81b084e..ee8d04d1 100644 --- a/taglib/toolkit/tstring.cpp +++ b/taglib/toolkit/tstring.cpp @@ -447,7 +447,10 @@ bool String::startsWith(const String &s) const String String::substr(unsigned int position, unsigned int n) const { - return String(d->data.substr(position, n)); + if(position == 0 && n == size()) + return *this; + else + return String(d->data.substr(position, n)); } String &String::append(const String &s) -- 2.40.0