]> granicus.if.org Git - taglib/commitdiff
tstring: String::substr optimization when returning itself as a substring
authorMartin Flaska <martin.flaska@legrand.us>
Fri, 25 Nov 2016 14:32:26 +0000 (15:32 +0100)
committerMartin Flaska <martin.flaska@legrand.us>
Fri, 25 Nov 2016 14:32:26 +0000 (15:32 +0100)
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 <martin.flaska@legrand.us>
taglib/toolkit/tstring.cpp

index b81b084e40993f2095877c084c1a59ea4997b7aa..ee8d04d1a9eda27339d0bb8af4781ae4c404b277 100644 (file)
@@ -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)